From cee29dc468b0632a9f0bb51944a39787c31f87c3 Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Wed, 24 Feb 2021 21:12:47 +0900 Subject: [PATCH 01/17] Remove spirv, it's being maintained in another repo --- gen/generator_spirv.jl | 43 -- gen/spirv_common.jl | 975 ----------------------------------------- 2 files changed, 1018 deletions(-) delete mode 100644 gen/generator_spirv.jl delete mode 100644 gen/spirv_common.jl diff --git a/gen/generator_spirv.jl b/gen/generator_spirv.jl deleted file mode 100644 index 1503b30..0000000 --- a/gen/generator_spirv.jl +++ /dev/null @@ -1,43 +0,0 @@ -using Clang - -# get spirv source -spirv = joinpath(@__DIR__, "spirv.h") -download("https://www.khronos.org/registry/spir-v/api/1.0/spirv.h", spirv) - -# create a work context -ctx = DefaultContext() - -# parse headers -parse_headers!(ctx, [spirv]) - -# settings -ctx.libname = "libspirv" -ctx.options["is_function_strictly_typed"] = false -ctx.options["is_struct_mutable"] = false - -# write output -for trans_unit in ctx.trans_units - root_cursor = getcursor(trans_unit) - push!(ctx.cursor_stack, root_cursor) - header = spelling(root_cursor) - @info "wrapping header: $header ..." - # loop over all of the child cursors and wrap them, if appropriate. - ctx.children = children(root_cursor) - for (i, child) in enumerate(ctx.children) - child_name = name(child) - child_header = filename(child) - ctx.children_index = i - # choose which cursor to wrap - startswith(child_name, "__") && continue # skip compiler definitions - child_name in keys(ctx.common_buffer) && continue # already wrapped - child_header != header && continue # skip if cursor filename is not in the headers to be wrapped - - wrap!(ctx, child) - end -end -# write "common" definitions: types, typealiases, etc. -common_file = joinpath(@__DIR__, "spirv_common.jl") -open(common_file, "w") do f - println(f, "# Automatically generated using Clang.jl\n") - print_buffer(f, dump_to_buffer(ctx.common_buffer)) -end diff --git a/gen/spirv_common.jl b/gen/spirv_common.jl deleted file mode 100644 index e432a81..0000000 --- a/gen/spirv_common.jl +++ /dev/null @@ -1,975 +0,0 @@ -# Automatically generated using Clang.jl - - -const SPV_VERSION = 0x00010000 -const SPV_REVISION = 8 -const SpvId = UInt32 - -@cenum SpvSourceLanguage_::UInt32 begin - SpvSourceLanguageUnknown = 0 - SpvSourceLanguageESSL = 1 - SpvSourceLanguageGLSL = 2 - SpvSourceLanguageOpenCL_C = 3 - SpvSourceLanguageOpenCL_CPP = 4 - SpvSourceLanguageMax = 2147483647 -end - - -const SpvSourceLanguage = SpvSourceLanguage_ - -@cenum SpvExecutionModel_::UInt32 begin - SpvExecutionModelVertex = 0 - SpvExecutionModelTessellationControl = 1 - SpvExecutionModelTessellationEvaluation = 2 - SpvExecutionModelGeometry = 3 - SpvExecutionModelFragment = 4 - SpvExecutionModelGLCompute = 5 - SpvExecutionModelKernel = 6 - SpvExecutionModelMax = 2147483647 -end - - -const SpvExecutionModel = SpvExecutionModel_ - -@cenum SpvAddressingModel_::UInt32 begin - SpvAddressingModelLogical = 0 - SpvAddressingModelPhysical32 = 1 - SpvAddressingModelPhysical64 = 2 - SpvAddressingModelMax = 2147483647 -end - - -const SpvAddressingModel = SpvAddressingModel_ - -@cenum SpvMemoryModel_::UInt32 begin - SpvMemoryModelSimple = 0 - SpvMemoryModelGLSL450 = 1 - SpvMemoryModelOpenCL = 2 - SpvMemoryModelMax = 2147483647 -end - - -const SpvMemoryModel = SpvMemoryModel_ - -@cenum SpvExecutionMode_::UInt32 begin - SpvExecutionModeInvocations = 0 - SpvExecutionModeSpacingEqual = 1 - SpvExecutionModeSpacingFractionalEven = 2 - SpvExecutionModeSpacingFractionalOdd = 3 - SpvExecutionModeVertexOrderCw = 4 - SpvExecutionModeVertexOrderCcw = 5 - SpvExecutionModePixelCenterInteger = 6 - SpvExecutionModeOriginUpperLeft = 7 - SpvExecutionModeOriginLowerLeft = 8 - SpvExecutionModeEarlyFragmentTests = 9 - SpvExecutionModePointMode = 10 - SpvExecutionModeXfb = 11 - SpvExecutionModeDepthReplacing = 12 - SpvExecutionModeDepthGreater = 14 - SpvExecutionModeDepthLess = 15 - SpvExecutionModeDepthUnchanged = 16 - SpvExecutionModeLocalSize = 17 - SpvExecutionModeLocalSizeHint = 18 - SpvExecutionModeInputPoints = 19 - SpvExecutionModeInputLines = 20 - SpvExecutionModeInputLinesAdjacency = 21 - SpvExecutionModeTriangles = 22 - SpvExecutionModeInputTrianglesAdjacency = 23 - SpvExecutionModeQuads = 24 - SpvExecutionModeIsolines = 25 - SpvExecutionModeOutputVertices = 26 - SpvExecutionModeOutputPoints = 27 - SpvExecutionModeOutputLineStrip = 28 - SpvExecutionModeOutputTriangleStrip = 29 - SpvExecutionModeVecTypeHint = 30 - SpvExecutionModeContractionOff = 31 - SpvExecutionModeMax = 2147483647 -end - - -const SpvExecutionMode = SpvExecutionMode_ - -@cenum SpvStorageClass_::UInt32 begin - SpvStorageClassUniformConstant = 0 - SpvStorageClassInput = 1 - SpvStorageClassUniform = 2 - SpvStorageClassOutput = 3 - SpvStorageClassWorkgroup = 4 - SpvStorageClassCrossWorkgroup = 5 - SpvStorageClassPrivate = 6 - SpvStorageClassFunction = 7 - SpvStorageClassGeneric = 8 - SpvStorageClassPushConstant = 9 - SpvStorageClassAtomicCounter = 10 - SpvStorageClassImage = 11 - SpvStorageClassMax = 2147483647 -end - - -const SpvStorageClass = SpvStorageClass_ - -@cenum SpvDim_::UInt32 begin - SpvDim1D = 0 - SpvDim2D = 1 - SpvDim3D = 2 - SpvDimCube = 3 - SpvDimRect = 4 - SpvDimBuffer = 5 - SpvDimSubpassData = 6 - SpvDimMax = 2147483647 -end - - -const SpvDim = SpvDim_ - -@cenum SpvSamplerAddressingMode_::UInt32 begin - SpvSamplerAddressingModeNone = 0 - SpvSamplerAddressingModeClampToEdge = 1 - SpvSamplerAddressingModeClamp = 2 - SpvSamplerAddressingModeRepeat = 3 - SpvSamplerAddressingModeRepeatMirrored = 4 - SpvSamplerAddressingModeMax = 2147483647 -end - - -const SpvSamplerAddressingMode = SpvSamplerAddressingMode_ - -@cenum SpvSamplerFilterMode_::UInt32 begin - SpvSamplerFilterModeNearest = 0 - SpvSamplerFilterModeLinear = 1 - SpvSamplerFilterModeMax = 2147483647 -end - - -const SpvSamplerFilterMode = SpvSamplerFilterMode_ - -@cenum SpvImageFormat_::UInt32 begin - SpvImageFormatUnknown = 0 - SpvImageFormatRgba32f = 1 - SpvImageFormatRgba16f = 2 - SpvImageFormatR32f = 3 - SpvImageFormatRgba8 = 4 - SpvImageFormatRgba8Snorm = 5 - SpvImageFormatRg32f = 6 - SpvImageFormatRg16f = 7 - SpvImageFormatR11fG11fB10f = 8 - SpvImageFormatR16f = 9 - SpvImageFormatRgba16 = 10 - SpvImageFormatRgb10A2 = 11 - SpvImageFormatRg16 = 12 - SpvImageFormatRg8 = 13 - SpvImageFormatR16 = 14 - SpvImageFormatR8 = 15 - SpvImageFormatRgba16Snorm = 16 - SpvImageFormatRg16Snorm = 17 - SpvImageFormatRg8Snorm = 18 - SpvImageFormatR16Snorm = 19 - SpvImageFormatR8Snorm = 20 - SpvImageFormatRgba32i = 21 - SpvImageFormatRgba16i = 22 - SpvImageFormatRgba8i = 23 - SpvImageFormatR32i = 24 - SpvImageFormatRg32i = 25 - SpvImageFormatRg16i = 26 - SpvImageFormatRg8i = 27 - SpvImageFormatR16i = 28 - SpvImageFormatR8i = 29 - SpvImageFormatRgba32ui = 30 - SpvImageFormatRgba16ui = 31 - SpvImageFormatRgba8ui = 32 - SpvImageFormatR32ui = 33 - SpvImageFormatRgb10a2ui = 34 - SpvImageFormatRg32ui = 35 - SpvImageFormatRg16ui = 36 - SpvImageFormatRg8ui = 37 - SpvImageFormatR16ui = 38 - SpvImageFormatR8ui = 39 - SpvImageFormatMax = 2147483647 -end - - -const SpvImageFormat = SpvImageFormat_ - -@cenum SpvImageChannelOrder_::UInt32 begin - SpvImageChannelOrderR = 0 - SpvImageChannelOrderA = 1 - SpvImageChannelOrderRG = 2 - SpvImageChannelOrderRA = 3 - SpvImageChannelOrderRGB = 4 - SpvImageChannelOrderRGBA = 5 - SpvImageChannelOrderBGRA = 6 - SpvImageChannelOrderARGB = 7 - SpvImageChannelOrderIntensity = 8 - SpvImageChannelOrderLuminance = 9 - SpvImageChannelOrderRx = 10 - SpvImageChannelOrderRGx = 11 - SpvImageChannelOrderRGBx = 12 - SpvImageChannelOrderDepth = 13 - SpvImageChannelOrderDepthStencil = 14 - SpvImageChannelOrdersRGB = 15 - SpvImageChannelOrdersRGBx = 16 - SpvImageChannelOrdersRGBA = 17 - SpvImageChannelOrdersBGRA = 18 - SpvImageChannelOrderABGR = 19 - SpvImageChannelOrderMax = 2147483647 -end - - -const SpvImageChannelOrder = SpvImageChannelOrder_ - -@cenum SpvImageChannelDataType_::UInt32 begin - SpvImageChannelDataTypeSnormInt8 = 0 - SpvImageChannelDataTypeSnormInt16 = 1 - SpvImageChannelDataTypeUnormInt8 = 2 - SpvImageChannelDataTypeUnormInt16 = 3 - SpvImageChannelDataTypeUnormShort565 = 4 - SpvImageChannelDataTypeUnormShort555 = 5 - SpvImageChannelDataTypeUnormInt101010 = 6 - SpvImageChannelDataTypeSignedInt8 = 7 - SpvImageChannelDataTypeSignedInt16 = 8 - SpvImageChannelDataTypeSignedInt32 = 9 - SpvImageChannelDataTypeUnsignedInt8 = 10 - SpvImageChannelDataTypeUnsignedInt16 = 11 - SpvImageChannelDataTypeUnsignedInt32 = 12 - SpvImageChannelDataTypeHalfFloat = 13 - SpvImageChannelDataTypeFloat = 14 - SpvImageChannelDataTypeUnormInt24 = 15 - SpvImageChannelDataTypeUnormInt101010_2 = 16 - SpvImageChannelDataTypeMax = 2147483647 -end - - -const SpvImageChannelDataType = SpvImageChannelDataType_ - -@cenum SpvImageOperandsShift_::UInt32 begin - SpvImageOperandsBiasShift = 0 - SpvImageOperandsLodShift = 1 - SpvImageOperandsGradShift = 2 - SpvImageOperandsConstOffsetShift = 3 - SpvImageOperandsOffsetShift = 4 - SpvImageOperandsConstOffsetsShift = 5 - SpvImageOperandsSampleShift = 6 - SpvImageOperandsMinLodShift = 7 - SpvImageOperandsMax = 2147483647 -end - - -const SpvImageOperandsShift = SpvImageOperandsShift_ - -@cenum SpvImageOperandsMask_::UInt32 begin - SpvImageOperandsMaskNone = 0 - SpvImageOperandsBiasMask = 1 - SpvImageOperandsLodMask = 2 - SpvImageOperandsGradMask = 4 - SpvImageOperandsConstOffsetMask = 8 - SpvImageOperandsOffsetMask = 16 - SpvImageOperandsConstOffsetsMask = 32 - SpvImageOperandsSampleMask = 64 - SpvImageOperandsMinLodMask = 128 -end - - -const SpvImageOperandsMask = SpvImageOperandsMask_ - -@cenum SpvFPFastMathModeShift_::UInt32 begin - SpvFPFastMathModeNotNaNShift = 0 - SpvFPFastMathModeNotInfShift = 1 - SpvFPFastMathModeNSZShift = 2 - SpvFPFastMathModeAllowRecipShift = 3 - SpvFPFastMathModeFastShift = 4 - SpvFPFastMathModeMax = 2147483647 -end - - -const SpvFPFastMathModeShift = SpvFPFastMathModeShift_ - -@cenum SpvFPFastMathModeMask_::UInt32 begin - SpvFPFastMathModeMaskNone = 0 - SpvFPFastMathModeNotNaNMask = 1 - SpvFPFastMathModeNotInfMask = 2 - SpvFPFastMathModeNSZMask = 4 - SpvFPFastMathModeAllowRecipMask = 8 - SpvFPFastMathModeFastMask = 16 -end - - -const SpvFPFastMathModeMask = SpvFPFastMathModeMask_ - -@cenum SpvFPRoundingMode_::UInt32 begin - SpvFPRoundingModeRTE = 0 - SpvFPRoundingModeRTZ = 1 - SpvFPRoundingModeRTP = 2 - SpvFPRoundingModeRTN = 3 - SpvFPRoundingModeMax = 2147483647 -end - - -const SpvFPRoundingMode = SpvFPRoundingMode_ - -@cenum SpvLinkageType_::UInt32 begin - SpvLinkageTypeExport = 0 - SpvLinkageTypeImport = 1 - SpvLinkageTypeMax = 2147483647 -end - - -const SpvLinkageType = SpvLinkageType_ - -@cenum SpvAccessQualifier_::UInt32 begin - SpvAccessQualifierReadOnly = 0 - SpvAccessQualifierWriteOnly = 1 - SpvAccessQualifierReadWrite = 2 - SpvAccessQualifierMax = 2147483647 -end - - -const SpvAccessQualifier = SpvAccessQualifier_ - -@cenum SpvFunctionParameterAttribute_::UInt32 begin - SpvFunctionParameterAttributeZext = 0 - SpvFunctionParameterAttributeSext = 1 - SpvFunctionParameterAttributeByVal = 2 - SpvFunctionParameterAttributeSret = 3 - SpvFunctionParameterAttributeNoAlias = 4 - SpvFunctionParameterAttributeNoCapture = 5 - SpvFunctionParameterAttributeNoWrite = 6 - SpvFunctionParameterAttributeNoReadWrite = 7 - SpvFunctionParameterAttributeMax = 2147483647 -end - - -const SpvFunctionParameterAttribute = SpvFunctionParameterAttribute_ - -@cenum SpvDecoration_::UInt32 begin - SpvDecorationRelaxedPrecision = 0 - SpvDecorationSpecId = 1 - SpvDecorationBlock = 2 - SpvDecorationBufferBlock = 3 - SpvDecorationRowMajor = 4 - SpvDecorationColMajor = 5 - SpvDecorationArrayStride = 6 - SpvDecorationMatrixStride = 7 - SpvDecorationGLSLShared = 8 - SpvDecorationGLSLPacked = 9 - SpvDecorationCPacked = 10 - SpvDecorationBuiltIn = 11 - SpvDecorationNoPerspective = 13 - SpvDecorationFlat = 14 - SpvDecorationPatch = 15 - SpvDecorationCentroid = 16 - SpvDecorationSample = 17 - SpvDecorationInvariant = 18 - SpvDecorationRestrict = 19 - SpvDecorationAliased = 20 - SpvDecorationVolatile = 21 - SpvDecorationConstant = 22 - SpvDecorationCoherent = 23 - SpvDecorationNonWritable = 24 - SpvDecorationNonReadable = 25 - SpvDecorationUniform = 26 - SpvDecorationSaturatedConversion = 28 - SpvDecorationStream = 29 - SpvDecorationLocation = 30 - SpvDecorationComponent = 31 - SpvDecorationIndex = 32 - SpvDecorationBinding = 33 - SpvDecorationDescriptorSet = 34 - SpvDecorationOffset = 35 - SpvDecorationXfbBuffer = 36 - SpvDecorationXfbStride = 37 - SpvDecorationFuncParamAttr = 38 - SpvDecorationFPRoundingMode = 39 - SpvDecorationFPFastMathMode = 40 - SpvDecorationLinkageAttributes = 41 - SpvDecorationNoContraction = 42 - SpvDecorationInputAttachmentIndex = 43 - SpvDecorationAlignment = 44 - SpvDecorationMax = 2147483647 -end - - -const SpvDecoration = SpvDecoration_ - -@cenum SpvBuiltIn_::UInt32 begin - SpvBuiltInPosition = 0 - SpvBuiltInPointSize = 1 - SpvBuiltInClipDistance = 3 - SpvBuiltInCullDistance = 4 - SpvBuiltInVertexId = 5 - SpvBuiltInInstanceId = 6 - SpvBuiltInPrimitiveId = 7 - SpvBuiltInInvocationId = 8 - SpvBuiltInLayer = 9 - SpvBuiltInViewportIndex = 10 - SpvBuiltInTessLevelOuter = 11 - SpvBuiltInTessLevelInner = 12 - SpvBuiltInTessCoord = 13 - SpvBuiltInPatchVertices = 14 - SpvBuiltInFragCoord = 15 - SpvBuiltInPointCoord = 16 - SpvBuiltInFrontFacing = 17 - SpvBuiltInSampleId = 18 - SpvBuiltInSamplePosition = 19 - SpvBuiltInSampleMask = 20 - SpvBuiltInFragDepth = 22 - SpvBuiltInHelperInvocation = 23 - SpvBuiltInNumWorkgroups = 24 - SpvBuiltInWorkgroupSize = 25 - SpvBuiltInWorkgroupId = 26 - SpvBuiltInLocalInvocationId = 27 - SpvBuiltInGlobalInvocationId = 28 - SpvBuiltInLocalInvocationIndex = 29 - SpvBuiltInWorkDim = 30 - SpvBuiltInGlobalSize = 31 - SpvBuiltInEnqueuedWorkgroupSize = 32 - SpvBuiltInGlobalOffset = 33 - SpvBuiltInGlobalLinearId = 34 - SpvBuiltInSubgroupSize = 36 - SpvBuiltInSubgroupMaxSize = 37 - SpvBuiltInNumSubgroups = 38 - SpvBuiltInNumEnqueuedSubgroups = 39 - SpvBuiltInSubgroupId = 40 - SpvBuiltInSubgroupLocalInvocationId = 41 - SpvBuiltInVertexIndex = 42 - SpvBuiltInInstanceIndex = 43 - SpvBuiltInSubgroupEqMaskKHR = 4416 - SpvBuiltInSubgroupGeMaskKHR = 4417 - SpvBuiltInSubgroupGtMaskKHR = 4418 - SpvBuiltInSubgroupLeMaskKHR = 4419 - SpvBuiltInSubgroupLtMaskKHR = 4420 - SpvBuiltInBaseVertex = 4424 - SpvBuiltInBaseInstance = 4425 - SpvBuiltInDrawIndex = 4426 - SpvBuiltInMax = 2147483647 -end - - -const SpvBuiltIn = SpvBuiltIn_ - -@cenum SpvSelectionControlShift_::UInt32 begin - SpvSelectionControlFlattenShift = 0 - SpvSelectionControlDontFlattenShift = 1 - SpvSelectionControlMax = 2147483647 -end - - -const SpvSelectionControlShift = SpvSelectionControlShift_ - -@cenum SpvSelectionControlMask_::UInt32 begin - SpvSelectionControlMaskNone = 0 - SpvSelectionControlFlattenMask = 1 - SpvSelectionControlDontFlattenMask = 2 -end - - -const SpvSelectionControlMask = SpvSelectionControlMask_ - -@cenum SpvLoopControlShift_::UInt32 begin - SpvLoopControlUnrollShift = 0 - SpvLoopControlDontUnrollShift = 1 - SpvLoopControlMax = 2147483647 -end - - -const SpvLoopControlShift = SpvLoopControlShift_ - -@cenum SpvLoopControlMask_::UInt32 begin - SpvLoopControlMaskNone = 0 - SpvLoopControlUnrollMask = 1 - SpvLoopControlDontUnrollMask = 2 -end - - -const SpvLoopControlMask = SpvLoopControlMask_ - -@cenum SpvFunctionControlShift_::UInt32 begin - SpvFunctionControlInlineShift = 0 - SpvFunctionControlDontInlineShift = 1 - SpvFunctionControlPureShift = 2 - SpvFunctionControlConstShift = 3 - SpvFunctionControlMax = 2147483647 -end - - -const SpvFunctionControlShift = SpvFunctionControlShift_ - -@cenum SpvFunctionControlMask_::UInt32 begin - SpvFunctionControlMaskNone = 0 - SpvFunctionControlInlineMask = 1 - SpvFunctionControlDontInlineMask = 2 - SpvFunctionControlPureMask = 4 - SpvFunctionControlConstMask = 8 -end - - -const SpvFunctionControlMask = SpvFunctionControlMask_ - -@cenum SpvMemorySemanticsShift_::UInt32 begin - SpvMemorySemanticsAcquireShift = 1 - SpvMemorySemanticsReleaseShift = 2 - SpvMemorySemanticsAcquireReleaseShift = 3 - SpvMemorySemanticsSequentiallyConsistentShift = 4 - SpvMemorySemanticsUniformMemoryShift = 6 - SpvMemorySemanticsSubgroupMemoryShift = 7 - SpvMemorySemanticsWorkgroupMemoryShift = 8 - SpvMemorySemanticsCrossWorkgroupMemoryShift = 9 - SpvMemorySemanticsAtomicCounterMemoryShift = 10 - SpvMemorySemanticsImageMemoryShift = 11 - SpvMemorySemanticsMax = 2147483647 -end - - -const SpvMemorySemanticsShift = SpvMemorySemanticsShift_ - -@cenum SpvMemorySemanticsMask_::UInt32 begin - SpvMemorySemanticsMaskNone = 0 - SpvMemorySemanticsAcquireMask = 2 - SpvMemorySemanticsReleaseMask = 4 - SpvMemorySemanticsAcquireReleaseMask = 8 - SpvMemorySemanticsSequentiallyConsistentMask = 16 - SpvMemorySemanticsUniformMemoryMask = 64 - SpvMemorySemanticsSubgroupMemoryMask = 128 - SpvMemorySemanticsWorkgroupMemoryMask = 256 - SpvMemorySemanticsCrossWorkgroupMemoryMask = 512 - SpvMemorySemanticsAtomicCounterMemoryMask = 1024 - SpvMemorySemanticsImageMemoryMask = 2048 -end - - -const SpvMemorySemanticsMask = SpvMemorySemanticsMask_ - -@cenum SpvMemoryAccessShift_::UInt32 begin - SpvMemoryAccessVolatileShift = 0 - SpvMemoryAccessAlignedShift = 1 - SpvMemoryAccessNontemporalShift = 2 - SpvMemoryAccessMax = 2147483647 -end - - -const SpvMemoryAccessShift = SpvMemoryAccessShift_ - -@cenum SpvMemoryAccessMask_::UInt32 begin - SpvMemoryAccessMaskNone = 0 - SpvMemoryAccessVolatileMask = 1 - SpvMemoryAccessAlignedMask = 2 - SpvMemoryAccessNontemporalMask = 4 -end - - -const SpvMemoryAccessMask = SpvMemoryAccessMask_ - -@cenum SpvScope_::UInt32 begin - SpvScopeCrossDevice = 0 - SpvScopeDevice = 1 - SpvScopeWorkgroup = 2 - SpvScopeSubgroup = 3 - SpvScopeInvocation = 4 - SpvScopeMax = 2147483647 -end - - -const SpvScope = SpvScope_ - -@cenum SpvGroupOperation_::UInt32 begin - SpvGroupOperationReduce = 0 - SpvGroupOperationInclusiveScan = 1 - SpvGroupOperationExclusiveScan = 2 - SpvGroupOperationMax = 2147483647 -end - - -const SpvGroupOperation = SpvGroupOperation_ - -@cenum SpvKernelEnqueueFlags_::UInt32 begin - SpvKernelEnqueueFlagsNoWait = 0 - SpvKernelEnqueueFlagsWaitKernel = 1 - SpvKernelEnqueueFlagsWaitWorkGroup = 2 - SpvKernelEnqueueFlagsMax = 2147483647 -end - - -const SpvKernelEnqueueFlags = SpvKernelEnqueueFlags_ - -@cenum SpvKernelProfilingInfoShift_::UInt32 begin - SpvKernelProfilingInfoCmdExecTimeShift = 0 - SpvKernelProfilingInfoMax = 2147483647 -end - - -const SpvKernelProfilingInfoShift = SpvKernelProfilingInfoShift_ - -@cenum SpvKernelProfilingInfoMask_::UInt32 begin - SpvKernelProfilingInfoMaskNone = 0 - SpvKernelProfilingInfoCmdExecTimeMask = 1 -end - - -const SpvKernelProfilingInfoMask = SpvKernelProfilingInfoMask_ - -@cenum SpvCapability_::UInt32 begin - SpvCapabilityMatrix = 0 - SpvCapabilityShader = 1 - SpvCapabilityGeometry = 2 - SpvCapabilityTessellation = 3 - SpvCapabilityAddresses = 4 - SpvCapabilityLinkage = 5 - SpvCapabilityKernel = 6 - SpvCapabilityVector16 = 7 - SpvCapabilityFloat16Buffer = 8 - SpvCapabilityFloat16 = 9 - SpvCapabilityFloat64 = 10 - SpvCapabilityInt64 = 11 - SpvCapabilityInt64Atomics = 12 - SpvCapabilityImageBasic = 13 - SpvCapabilityImageReadWrite = 14 - SpvCapabilityImageMipmap = 15 - SpvCapabilityPipes = 17 - SpvCapabilityGroups = 18 - SpvCapabilityDeviceEnqueue = 19 - SpvCapabilityLiteralSampler = 20 - SpvCapabilityAtomicStorage = 21 - SpvCapabilityInt16 = 22 - SpvCapabilityTessellationPointSize = 23 - SpvCapabilityGeometryPointSize = 24 - SpvCapabilityImageGatherExtended = 25 - SpvCapabilityStorageImageMultisample = 27 - SpvCapabilityUniformBufferArrayDynamicIndexing = 28 - SpvCapabilitySampledImageArrayDynamicIndexing = 29 - SpvCapabilityStorageBufferArrayDynamicIndexing = 30 - SpvCapabilityStorageImageArrayDynamicIndexing = 31 - SpvCapabilityClipDistance = 32 - SpvCapabilityCullDistance = 33 - SpvCapabilityImageCubeArray = 34 - SpvCapabilitySampleRateShading = 35 - SpvCapabilityImageRect = 36 - SpvCapabilitySampledRect = 37 - SpvCapabilityGenericPointer = 38 - SpvCapabilityInt8 = 39 - SpvCapabilityInputAttachment = 40 - SpvCapabilitySparseResidency = 41 - SpvCapabilityMinLod = 42 - SpvCapabilitySampled1D = 43 - SpvCapabilityImage1D = 44 - SpvCapabilitySampledCubeArray = 45 - SpvCapabilitySampledBuffer = 46 - SpvCapabilityImageBuffer = 47 - SpvCapabilityImageMSArray = 48 - SpvCapabilityStorageImageExtendedFormats = 49 - SpvCapabilityImageQuery = 50 - SpvCapabilityDerivativeControl = 51 - SpvCapabilityInterpolationFunction = 52 - SpvCapabilityTransformFeedback = 53 - SpvCapabilityGeometryStreams = 54 - SpvCapabilityStorageImageReadWithoutFormat = 55 - SpvCapabilityStorageImageWriteWithoutFormat = 56 - SpvCapabilityMultiViewport = 57 - SpvCapabilitySubgroupBallotKHR = 4423 - SpvCapabilityDrawParameters = 4427 - SpvCapabilityMax = 2147483647 -end - - -const SpvCapability = SpvCapability_ - -@cenum SpvOp_::UInt32 begin - SpvOpNop = 0 - SpvOpUndef = 1 - SpvOpSourceContinued = 2 - SpvOpSource = 3 - SpvOpSourceExtension = 4 - SpvOpName = 5 - SpvOpMemberName = 6 - SpvOpString = 7 - SpvOpLine = 8 - SpvOpExtension = 10 - SpvOpExtInstImport = 11 - SpvOpExtInst = 12 - SpvOpMemoryModel = 14 - SpvOpEntryPoint = 15 - SpvOpExecutionMode = 16 - SpvOpCapability = 17 - SpvOpTypeVoid = 19 - SpvOpTypeBool = 20 - SpvOpTypeInt = 21 - SpvOpTypeFloat = 22 - SpvOpTypeVector = 23 - SpvOpTypeMatrix = 24 - SpvOpTypeImage = 25 - SpvOpTypeSampler = 26 - SpvOpTypeSampledImage = 27 - SpvOpTypeArray = 28 - SpvOpTypeRuntimeArray = 29 - SpvOpTypeStruct = 30 - SpvOpTypeOpaque = 31 - SpvOpTypePointer = 32 - SpvOpTypeFunction = 33 - SpvOpTypeEvent = 34 - SpvOpTypeDeviceEvent = 35 - SpvOpTypeReserveId = 36 - SpvOpTypeQueue = 37 - SpvOpTypePipe = 38 - SpvOpTypeForwardPointer = 39 - SpvOpConstantTrue = 41 - SpvOpConstantFalse = 42 - SpvOpConstant = 43 - SpvOpConstantComposite = 44 - SpvOpConstantSampler = 45 - SpvOpConstantNull = 46 - SpvOpSpecConstantTrue = 48 - SpvOpSpecConstantFalse = 49 - SpvOpSpecConstant = 50 - SpvOpSpecConstantComposite = 51 - SpvOpSpecConstantOp = 52 - SpvOpFunction = 54 - SpvOpFunctionParameter = 55 - SpvOpFunctionEnd = 56 - SpvOpFunctionCall = 57 - SpvOpVariable = 59 - SpvOpImageTexelPointer = 60 - SpvOpLoad = 61 - SpvOpStore = 62 - SpvOpCopyMemory = 63 - SpvOpCopyMemorySized = 64 - SpvOpAccessChain = 65 - SpvOpInBoundsAccessChain = 66 - SpvOpPtrAccessChain = 67 - SpvOpArrayLength = 68 - SpvOpGenericPtrMemSemantics = 69 - SpvOpInBoundsPtrAccessChain = 70 - SpvOpDecorate = 71 - SpvOpMemberDecorate = 72 - SpvOpDecorationGroup = 73 - SpvOpGroupDecorate = 74 - SpvOpGroupMemberDecorate = 75 - SpvOpVectorExtractDynamic = 77 - SpvOpVectorInsertDynamic = 78 - SpvOpVectorShuffle = 79 - SpvOpCompositeConstruct = 80 - SpvOpCompositeExtract = 81 - SpvOpCompositeInsert = 82 - SpvOpCopyObject = 83 - SpvOpTranspose = 84 - SpvOpSampledImage = 86 - SpvOpImageSampleImplicitLod = 87 - SpvOpImageSampleExplicitLod = 88 - SpvOpImageSampleDrefImplicitLod = 89 - SpvOpImageSampleDrefExplicitLod = 90 - SpvOpImageSampleProjImplicitLod = 91 - SpvOpImageSampleProjExplicitLod = 92 - SpvOpImageSampleProjDrefImplicitLod = 93 - SpvOpImageSampleProjDrefExplicitLod = 94 - SpvOpImageFetch = 95 - SpvOpImageGather = 96 - SpvOpImageDrefGather = 97 - SpvOpImageRead = 98 - SpvOpImageWrite = 99 - SpvOpImage = 100 - SpvOpImageQueryFormat = 101 - SpvOpImageQueryOrder = 102 - SpvOpImageQuerySizeLod = 103 - SpvOpImageQuerySize = 104 - SpvOpImageQueryLod = 105 - SpvOpImageQueryLevels = 106 - SpvOpImageQuerySamples = 107 - SpvOpConvertFToU = 109 - SpvOpConvertFToS = 110 - SpvOpConvertSToF = 111 - SpvOpConvertUToF = 112 - SpvOpUConvert = 113 - SpvOpSConvert = 114 - SpvOpFConvert = 115 - SpvOpQuantizeToF16 = 116 - SpvOpConvertPtrToU = 117 - SpvOpSatConvertSToU = 118 - SpvOpSatConvertUToS = 119 - SpvOpConvertUToPtr = 120 - SpvOpPtrCastToGeneric = 121 - SpvOpGenericCastToPtr = 122 - SpvOpGenericCastToPtrExplicit = 123 - SpvOpBitcast = 124 - SpvOpSNegate = 126 - SpvOpFNegate = 127 - SpvOpIAdd = 128 - SpvOpFAdd = 129 - SpvOpISub = 130 - SpvOpFSub = 131 - SpvOpIMul = 132 - SpvOpFMul = 133 - SpvOpUDiv = 134 - SpvOpSDiv = 135 - SpvOpFDiv = 136 - SpvOpUMod = 137 - SpvOpSRem = 138 - SpvOpSMod = 139 - SpvOpFRem = 140 - SpvOpFMod = 141 - SpvOpVectorTimesScalar = 142 - SpvOpMatrixTimesScalar = 143 - SpvOpVectorTimesMatrix = 144 - SpvOpMatrixTimesVector = 145 - SpvOpMatrixTimesMatrix = 146 - SpvOpOuterProduct = 147 - SpvOpDot = 148 - SpvOpIAddCarry = 149 - SpvOpISubBorrow = 150 - SpvOpUMulExtended = 151 - SpvOpSMulExtended = 152 - SpvOpAny = 154 - SpvOpAll = 155 - SpvOpIsNan = 156 - SpvOpIsInf = 157 - SpvOpIsFinite = 158 - SpvOpIsNormal = 159 - SpvOpSignBitSet = 160 - SpvOpLessOrGreater = 161 - SpvOpOrdered = 162 - SpvOpUnordered = 163 - SpvOpLogicalEqual = 164 - SpvOpLogicalNotEqual = 165 - SpvOpLogicalOr = 166 - SpvOpLogicalAnd = 167 - SpvOpLogicalNot = 168 - SpvOpSelect = 169 - SpvOpIEqual = 170 - SpvOpINotEqual = 171 - SpvOpUGreaterThan = 172 - SpvOpSGreaterThan = 173 - SpvOpUGreaterThanEqual = 174 - SpvOpSGreaterThanEqual = 175 - SpvOpULessThan = 176 - SpvOpSLessThan = 177 - SpvOpULessThanEqual = 178 - SpvOpSLessThanEqual = 179 - SpvOpFOrdEqual = 180 - SpvOpFUnordEqual = 181 - SpvOpFOrdNotEqual = 182 - SpvOpFUnordNotEqual = 183 - SpvOpFOrdLessThan = 184 - SpvOpFUnordLessThan = 185 - SpvOpFOrdGreaterThan = 186 - SpvOpFUnordGreaterThan = 187 - SpvOpFOrdLessThanEqual = 188 - SpvOpFUnordLessThanEqual = 189 - SpvOpFOrdGreaterThanEqual = 190 - SpvOpFUnordGreaterThanEqual = 191 - SpvOpShiftRightLogical = 194 - SpvOpShiftRightArithmetic = 195 - SpvOpShiftLeftLogical = 196 - SpvOpBitwiseOr = 197 - SpvOpBitwiseXor = 198 - SpvOpBitwiseAnd = 199 - SpvOpNot = 200 - SpvOpBitFieldInsert = 201 - SpvOpBitFieldSExtract = 202 - SpvOpBitFieldUExtract = 203 - SpvOpBitReverse = 204 - SpvOpBitCount = 205 - SpvOpDPdx = 207 - SpvOpDPdy = 208 - SpvOpFwidth = 209 - SpvOpDPdxFine = 210 - SpvOpDPdyFine = 211 - SpvOpFwidthFine = 212 - SpvOpDPdxCoarse = 213 - SpvOpDPdyCoarse = 214 - SpvOpFwidthCoarse = 215 - SpvOpEmitVertex = 218 - SpvOpEndPrimitive = 219 - SpvOpEmitStreamVertex = 220 - SpvOpEndStreamPrimitive = 221 - SpvOpControlBarrier = 224 - SpvOpMemoryBarrier = 225 - SpvOpAtomicLoad = 227 - SpvOpAtomicStore = 228 - SpvOpAtomicExchange = 229 - SpvOpAtomicCompareExchange = 230 - SpvOpAtomicCompareExchangeWeak = 231 - SpvOpAtomicIIncrement = 232 - SpvOpAtomicIDecrement = 233 - SpvOpAtomicIAdd = 234 - SpvOpAtomicISub = 235 - SpvOpAtomicSMin = 236 - SpvOpAtomicUMin = 237 - SpvOpAtomicSMax = 238 - SpvOpAtomicUMax = 239 - SpvOpAtomicAnd = 240 - SpvOpAtomicOr = 241 - SpvOpAtomicXor = 242 - SpvOpPhi = 245 - SpvOpLoopMerge = 246 - SpvOpSelectionMerge = 247 - SpvOpLabel = 248 - SpvOpBranch = 249 - SpvOpBranchConditional = 250 - SpvOpSwitch = 251 - SpvOpKill = 252 - SpvOpReturn = 253 - SpvOpReturnValue = 254 - SpvOpUnreachable = 255 - SpvOpLifetimeStart = 256 - SpvOpLifetimeStop = 257 - SpvOpGroupAsyncCopy = 259 - SpvOpGroupWaitEvents = 260 - SpvOpGroupAll = 261 - SpvOpGroupAny = 262 - SpvOpGroupBroadcast = 263 - SpvOpGroupIAdd = 264 - SpvOpGroupFAdd = 265 - SpvOpGroupFMin = 266 - SpvOpGroupUMin = 267 - SpvOpGroupSMin = 268 - SpvOpGroupFMax = 269 - SpvOpGroupUMax = 270 - SpvOpGroupSMax = 271 - SpvOpReadPipe = 274 - SpvOpWritePipe = 275 - SpvOpReservedReadPipe = 276 - SpvOpReservedWritePipe = 277 - SpvOpReserveReadPipePackets = 278 - SpvOpReserveWritePipePackets = 279 - SpvOpCommitReadPipe = 280 - SpvOpCommitWritePipe = 281 - SpvOpIsValidReserveId = 282 - SpvOpGetNumPipePackets = 283 - SpvOpGetMaxPipePackets = 284 - SpvOpGroupReserveReadPipePackets = 285 - SpvOpGroupReserveWritePipePackets = 286 - SpvOpGroupCommitReadPipe = 287 - SpvOpGroupCommitWritePipe = 288 - SpvOpEnqueueMarker = 291 - SpvOpEnqueueKernel = 292 - SpvOpGetKernelNDrangeSubGroupCount = 293 - SpvOpGetKernelNDrangeMaxSubGroupSize = 294 - SpvOpGetKernelWorkGroupSize = 295 - SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296 - SpvOpRetainEvent = 297 - SpvOpReleaseEvent = 298 - SpvOpCreateUserEvent = 299 - SpvOpIsValidEvent = 300 - SpvOpSetUserEventStatus = 301 - SpvOpCaptureEventProfilingInfo = 302 - SpvOpGetDefaultQueue = 303 - SpvOpBuildNDRange = 304 - SpvOpImageSparseSampleImplicitLod = 305 - SpvOpImageSparseSampleExplicitLod = 306 - SpvOpImageSparseSampleDrefImplicitLod = 307 - SpvOpImageSparseSampleDrefExplicitLod = 308 - SpvOpImageSparseSampleProjImplicitLod = 309 - SpvOpImageSparseSampleProjExplicitLod = 310 - SpvOpImageSparseSampleProjDrefImplicitLod = 311 - SpvOpImageSparseSampleProjDrefExplicitLod = 312 - SpvOpImageSparseFetch = 313 - SpvOpImageSparseGather = 314 - SpvOpImageSparseDrefGather = 315 - SpvOpImageSparseTexelsResident = 316 - SpvOpNoLine = 317 - SpvOpAtomicFlagTestAndSet = 318 - SpvOpAtomicFlagClear = 319 - SpvOpImageSparseRead = 320 - SpvOpSubgroupBallotKHR = 4421 - SpvOpSubgroupFirstInvocationKHR = 4422 - SpvOpMax = 2147483647 -end - - -const SpvOp = SpvOp_ From 8b717c03b876217b155c195b4b82238e96e6a3c5 Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Wed, 24 Feb 2021 22:05:49 +0900 Subject: [PATCH 02/17] Upgrade to Clang.jl new generator --- gen/definitions.jl | 87 + gen/generator.toml | 11 + gen/prologue.jl | 75 + src/LibVulkan.jl | 12465 ++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 12604 insertions(+), 34 deletions(-) create mode 100644 gen/definitions.jl create mode 100644 gen/generator.toml create mode 100644 gen/prologue.jl diff --git a/gen/definitions.jl b/gen/definitions.jl new file mode 100644 index 0000000..dcc0c55 --- /dev/null +++ b/gen/definitions.jl @@ -0,0 +1,87 @@ +# X11/X.h +struct Window <: AbstractJuliaSDT end +struct VisualID <: AbstractJuliaSDT end +# X11/Xlib.h +struct Display <: AbstractJuliaSIT end +# X11/Xrandr.h +struct RROutput <: AbstractJuliaSIT end +# xcb.h +struct xcb_connection_t <: AbstractJuliaSIT end +struct xcb_window_t <: AbstractJuliaSIT end +struct xcb_visualid_t <: AbstractJuliaSIT end +# Wayland +struct wl_display <: AbstractJuliaSIT end +struct wl_surface <: AbstractJuliaSIT end +# Mir +struct MirConnection <: AbstractJuliaSIT end +struct MirSurface <: AbstractJuliaSIT end +# Android +struct ANativeWindow <: AbstractJuliaSIT end +# Windows +struct HINSTANCE <: AbstractJuliaSIT end +struct HWND <: AbstractJuliaSIT end +struct HMONITOR <: AbstractJuliaSIT end +struct HANDLE <: AbstractJuliaSIT end +struct DWORD <: AbstractJuliaSIT end +struct LPCWSTR <: AbstractJuliaSIT end +struct SECURITY_ATTRIBUTES <: AbstractJuliaSIT end +# DirectFB +struct IDirectFB <: AbstractJuliaSIT end +struct IDirectFBSurface <: AbstractJuliaSIT end +# Zircon +struct zx_handle_t <: AbstractJuliaSIT end +# GGP C +struct GgpStreamDescriptor <: AbstractJuliaSIT end +struct GgpFrameToken <: AbstractJuliaSIT end + +add_definition(Dict( + :Window => Window(), + :VisualID => VisualID(), + :Display => Display(), + :RROutput => RROutput(), + :xcb_connection_t => xcb_connection_t(), + :xcb_window_t => xcb_window_t(), + :xcb_visualid_t => xcb_visualid_t(), + :wl_display => wl_display(), + :wl_surface => wl_surface(), + :MirConnection => MirConnection(), + :MirSurface => MirSurface(), + :ANativeWindow => ANativeWindow(), + :HINSTANCE => HINSTANCE(), + :HWND => HWND(), + :HMONITOR => HMONITOR(), + :HANDLE => HANDLE(), + :DWORD => DWORD(), + :LPCWSTR => LPCWSTR(), + :SECURITY_ATTRIBUTES => SECURITY_ATTRIBUTES(), + :IDirectFB => IDirectFB(), + :IDirectFBSurface => IDirectFBSurface(), + :zx_handle_t => zx_handle_t(), + :GgpStreamDescriptor => GgpStreamDescriptor(), + :GgpFrameToken => GgpFrameToken(), +)) + +Generators.translate(::Window, options=Dict()) = :Window +Generators.translate(::VisualID, options=Dict()) = :VisualID +Generators.translate(::Display, options=Dict()) = :Display +Generators.translate(::RROutput, options=Dict()) = :RROutput +Generators.translate(::xcb_connection_t, options=Dict()) = :xcb_connection_t +Generators.translate(::xcb_window_t, options=Dict()) = :xcb_window_t +Generators.translate(::xcb_visualid_t, options=Dict()) = :xcb_visualid_t +Generators.translate(::wl_display, options=Dict()) = :wl_display +Generators.translate(::wl_surface, options=Dict()) = :wl_surface +Generators.translate(::MirConnection, options=Dict()) = :MirConnection +Generators.translate(::MirSurface, options=Dict()) = :MirSurface +Generators.translate(::ANativeWindow, options=Dict()) = :ANativeWindow +Generators.translate(::HINSTANCE, options=Dict()) = :HINSTANCE +Generators.translate(::HWND, options=Dict()) = :HWND +Generators.translate(::HMONITOR, options=Dict()) = :HMONITOR +Generators.translate(::HANDLE, options=Dict()) = :HANDLE +Generators.translate(::DWORD, options=Dict()) = :DWORD +Generators.translate(::LPCWSTR, options=Dict()) = :LPCWSTR +Generators.translate(::SECURITY_ATTRIBUTES, options=Dict()) = :SECURITY_ATTRIBUTES +Generators.translate(::IDirectFB, options=Dict()) = :IDirectFB +Generators.translate(::IDirectFBSurface, options=Dict()) = :IDirectFBSurface +Generators.translate(::zx_handle_t, options=Dict()) = :zx_handle_t +Generators.translate(::GgpStreamDescriptor, options=Dict()) = :GgpStreamDescriptor +Generators.translate(::GgpFrameToken, options=Dict()) = :GgpFrameToken diff --git a/gen/generator.toml b/gen/generator.toml new file mode 100644 index 0000000..1fbe318 --- /dev/null +++ b/gen/generator.toml @@ -0,0 +1,11 @@ +[general] +library_name = "libvulkan" + +output_file_path = "./src/LibVulkan.jl" + +module_name = "LibVulkan" + +export_symbol_prefixes = ["VK_", "Vk", "vk"] + +prologue_file_path = "./gen/prologue.jl" +epilogue_file_path = "" \ No newline at end of file diff --git a/gen/prologue.jl b/gen/prologue.jl new file mode 100644 index 0000000..0c73c1d --- /dev/null +++ b/gen/prologue.jl @@ -0,0 +1,75 @@ +import Libdl + +@static if !isempty(get(ENV, "JULIA_VULKAN_LIBNAME", "")) + const libvulkan = ENV["JULIA_VULKAN_LIBNAME"] +elseif Sys.iswindows() + const libvulkan = "vulkan-1.dll" +elseif Sys.isapple() + const libvulkan = "libvulkan.dylib" +elseif Sys.islinux() + const libvulkan = "libvulkan.so.1" +else + const libvulkan = "libvulkan" +end + +const libvulkan_handle = Ref{Ptr{Cvoid}}(0) + +function __init__() + libname = Libdl.find_library(libvulkan) + if isempty(libname) + error(""" + Failed to retrieve a valid Vulkan library called '$libvulkan'. + If you configure the `JULIA_VULKAN_LIBNAME` environment variable before precompiling VulkanCore, it will be used instead of '$libvulkan'. You may also manually add search paths by appending them to Lidbl.DL_LOAD_PATH, but note that this may have repercussions beyond this package. + """) + end + libvulkan_handle[] = Libdl.dlopen(libname) +end + +#### External definitions +VK_QUEUE_FAMILY_EXTERNAL = nothing +VK_SHADER_UNUSED_KHR = nothing + +# X11/X.h +const Window = Culong +const VisualID = Culong +# X11/Xlib.h +const Display = Cvoid # opaque struct +# X11/Xrandr.h +const RROutput = UInt32 +# xcb.h +const xcb_connection_t = Cvoid # opaque struct +const xcb_window_t = UInt32 +const xcb_visualid_t = UInt32 +# Wayland +const wl_display = Cvoid # opaque struct +const wl_surface = Cvoid # opaque struct +# Mir +const MirConnection = Cvoid # opaque struct +const MirSurface = Cvoid # opaque struct +# Windows +const HINSTANCE = Ptr{Cvoid} +const HWND = Ptr{Cvoid} +const HMONITOR = Ptr{Cvoid} +const HANDLE = HMONITOR +const DWORD = UInt32 +const LPCWSTR = UInt16 +const SECURITY_ATTRIBUTES = Cvoid # opaque struct +# DirectFB +const IDirectFB = Cvoid # opaque struct +const IDirectFBSurface = Cvoid # opaque struct +# Zircon +const zx_handle_t = UInt32 +# GGP C +const GgpStreamDescriptor = UInt32 +const GgpFrameToken = UInt32 + +# TODO: Clang.jl should support this kinda macros +VK_MAKE_VERSION(major, minor, patch) = (Cuint(major) << 22) | (Cuint(minor) << 12) | patch + +VK_VERSION_MAJOR(version) = Cuint(version) >> 22 +VK_VERSION_MINOR(version) = (Cuint(version) >> 12) & 0x3ff +VK_VERSION_PATCH(version) = Cuint(version) & 0xfff + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index dafbffe..d6d9f66 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -1,11 +1,13 @@ module LibVulkan +using CEnum + import Libdl @static if !isempty(get(ENV, "JULIA_VULKAN_LIBNAME", "")) const libvulkan = ENV["JULIA_VULKAN_LIBNAME"] elseif Sys.iswindows() - const libvulkan = "vulkan-1.dll" + const libvulkan = "vulkan-1.dll" elseif Sys.isapple() const libvulkan = "libvulkan.dylib" elseif Sys.islinux() @@ -27,22 +29,15 @@ function __init__() libvulkan_handle[] = Libdl.dlopen(libname) end -include("CEnum.jl") -using .CEnum - -const Ctm = Base.Libc.TmStruct -const Ctime_t = UInt -const Cclock_t = UInt - -export Ctm, Ctime_t, Cclock_t - #### External definitions +VK_QUEUE_FAMILY_EXTERNAL = nothing +VK_SHADER_UNUSED_KHR = nothing # X11/X.h -const Window = UInt32 # unsigned long -const VisualID = UInt32 # unsigned long +const Window = Culong +const VisualID = Culong # X11/Xlib.h -const Display = Cvoid # Opaque struct +const Display = Cvoid # opaque struct # X11/Xrandr.h const RROutput = UInt32 # xcb.h @@ -50,13 +45,11 @@ const xcb_connection_t = Cvoid # opaque struct const xcb_window_t = UInt32 const xcb_visualid_t = UInt32 # Wayland -const wl_display = Cvoid # TODO: make opaque for now -const wl_surface = Cvoid # TODO: make opaque for now +const wl_display = Cvoid # opaque struct +const wl_surface = Cvoid # opaque struct # Mir -const MirConnection = Cvoid # TODO: make opaque for now -const MirSurface = Cvoid # TODO: make opaque for now -# Android -const ANativeWindow = Cvoid # TODO: make opaque for now +const MirConnection = Cvoid # opaque struct +const MirSurface = Cvoid # opaque struct # Windows const HINSTANCE = Ptr{Cvoid} const HWND = Ptr{Cvoid} @@ -73,13 +66,9 @@ const zx_handle_t = UInt32 # GGP C const GgpStreamDescriptor = UInt32 const GgpFrameToken = UInt32 -# QNX -const _screen_context = Ptr{Cvoid} -const _screen_window = Ptr{Cvoid} # TODO: Clang.jl should support this kinda macros -VK_MAKE_VERSION(major, minor, patch) = ( Cuint(major) << 22 ) | ( Cuint(minor) << 12 ) | patch -VK_MAKE_VIDEO_STD_VERSION(major, minor, patch) = VK_MAKE_VERSION(major, minor, patch) +VK_MAKE_VERSION(major, minor, patch) = (Cuint(major) << 22) | (Cuint(minor) << 12) | patch VK_VERSION_MAJOR(version) = Cuint(version) >> 22 VK_VERSION_MINOR(version) = (Cuint(version) >> 12) & 0x3ff @@ -89,19 +78,12427 @@ const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) -const VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9 = VK_MAKE_VIDEO_STD_VERSION(0, 9, 0) -const VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_5 = VK_MAKE_VIDEO_STD_VERSION(0, 5, 0) -include(joinpath(@__DIR__, "..", "gen", "vk_common.jl")) -include(joinpath(@__DIR__, "..", "gen", "vk_api.jl")) +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +mutable struct VkBuffer_T end + +const VkBuffer = Ptr{VkBuffer_T} + +mutable struct VkImage_T end + +const VkImage = Ptr{VkImage_T} + +mutable struct VkInstance_T end + +const VkInstance = Ptr{VkInstance_T} + +mutable struct VkPhysicalDevice_T end + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +mutable struct VkDevice_T end + +const VkDevice = Ptr{VkDevice_T} + +mutable struct VkQueue_T end + +const VkQueue = Ptr{VkQueue_T} + +mutable struct VkSemaphore_T end + +const VkSemaphore = Ptr{VkSemaphore_T} + +mutable struct VkCommandBuffer_T end + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +mutable struct VkFence_T end + +const VkFence = Ptr{VkFence_T} + +mutable struct VkDeviceMemory_T end + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +mutable struct VkEvent_T end + +const VkEvent = Ptr{VkEvent_T} + +mutable struct VkQueryPool_T end + +const VkQueryPool = Ptr{VkQueryPool_T} + +mutable struct VkBufferView_T end + +const VkBufferView = Ptr{VkBufferView_T} + +mutable struct VkImageView_T end + +const VkImageView = Ptr{VkImageView_T} + +mutable struct VkShaderModule_T end + +const VkShaderModule = Ptr{VkShaderModule_T} + +mutable struct VkPipelineCache_T end + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +mutable struct VkPipelineLayout_T end + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +mutable struct VkPipeline_T end + +const VkPipeline = Ptr{VkPipeline_T} + +mutable struct VkRenderPass_T end + +const VkRenderPass = Ptr{VkRenderPass_T} + +mutable struct VkDescriptorSetLayout_T end + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +mutable struct VkSampler_T end + +const VkSampler = Ptr{VkSampler_T} + +mutable struct VkDescriptorSet_T end + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +mutable struct VkDescriptorPool_T end + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +mutable struct VkFramebuffer_T end + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +mutable struct VkCommandPool_T end + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end -# export everything -foreach(names(@__MODULE__, all=true)) do s - if startswith(string(s), "VK_") || startswith(string(s), "Vk") || startswith(string(s), "vk") || startswith(string(s), "StdVideo") - @eval export $s - end +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# C code: +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# C code: +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# C code: +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# C code: +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +mutable struct VkSamplerYcbcrConversion_T end + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +mutable struct VkDescriptorUpdateTemplate_T end + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# C code: +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# C code: +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# C code: +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +mutable struct VkSurfaceKHR_T end + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +mutable struct VkSwapchainKHR_T end + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +mutable struct VkDisplayKHR_T end + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +mutable struct VkDisplayModeKHR_T end + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# C code: +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# C code: +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# C code: +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +mutable struct VkDebugReportCallbackEXT_T end + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# C code: +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# C code: +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +mutable struct VkDebugUtilsMessengerEXT_T end + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# C code: +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +mutable struct VkValidationCacheEXT_T end + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +mutable struct VkAccelerationStructureKHR_T end + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +mutable struct VkPerformanceConfigurationINTEL_T end + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# C code: +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +mutable struct VkIndirectCommandsLayoutNV_T end + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +mutable struct VkPrivateDataSlotEXT_T end + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +mutable struct ANativeWindow end + +const VkAndroidSurfaceCreateFlagsKHR = VkFlags + +struct VkAndroidSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAndroidSurfaceCreateFlagsKHR + window::Ptr{ANativeWindow} +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAndroidSurfaceKHR ) ( VkInstance instance , const VkAndroidSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateAndroidSurfaceKHR = Ptr{Cvoid} + +function vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateAndroidSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkAndroidSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +mutable struct AHardwareBuffer end + +struct VkAndroidHardwareBufferUsageANDROID + sType::VkStructureType + pNext::Ptr{Cvoid} + androidHardwareBufferUsage::UInt64 +end + +struct VkAndroidHardwareBufferPropertiesANDROID + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkAndroidHardwareBufferFormatPropertiesANDROID + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + externalFormat::UInt64 + formatFeatures::VkFormatFeatureFlags + samplerYcbcrConversionComponents::VkComponentMapping + suggestedYcbcrModel::VkSamplerYcbcrModelConversion + suggestedYcbcrRange::VkSamplerYcbcrRange + suggestedXChromaOffset::VkChromaLocation + suggestedYChromaOffset::VkChromaLocation +end + +struct VkImportAndroidHardwareBufferInfoANDROID + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::Ptr{AHardwareBuffer} +end + +struct VkMemoryGetAndroidHardwareBufferInfoANDROID + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +struct VkExternalFormatANDROID + sType::VkStructureType + pNext::Ptr{Cvoid} + externalFormat::UInt64 +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAndroidHardwareBufferPropertiesANDROID ) ( VkDevice device , const struct AHardwareBuffer * buffer , VkAndroidHardwareBufferPropertiesANDROID * pProperties ) +const PFN_vkGetAndroidHardwareBufferPropertiesANDROID = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryAndroidHardwareBufferANDROID ) ( VkDevice device , const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo , struct AHardwareBuffer * * pBuffer ) +const PFN_vkGetMemoryAndroidHardwareBufferANDROID = Ptr{Cvoid} + +function vkGetAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties) + ccall((:vkGetAndroidHardwareBufferPropertiesANDROID, libvulkan), VkResult, (VkDevice, Ptr{AHardwareBuffer}, Ptr{VkAndroidHardwareBufferPropertiesANDROID}), device, buffer, pProperties) +end + +function vkGetMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer) + ccall((:vkGetMemoryAndroidHardwareBufferANDROID, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetAndroidHardwareBufferInfoANDROID}, Ptr{Ptr{AHardwareBuffer}}), device, pInfo, pBuffer) +end + +const VkImagePipeSurfaceCreateFlagsFUCHSIA = VkFlags + +struct VkImagePipeSurfaceCreateInfoFUCHSIA +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImagePipeSurfaceFUCHSIA ) ( VkInstance instance , const VkImagePipeSurfaceCreateInfoFUCHSIA * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateImagePipeSurfaceFUCHSIA = Ptr{Cvoid} + +function vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateImagePipeSurfaceFUCHSIA, libvulkan), VkResult, (VkInstance, Ptr{VkImagePipeSurfaceCreateInfoFUCHSIA}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const VkIOSSurfaceCreateFlagsMVK = VkFlags + +struct VkIOSSurfaceCreateInfoMVK + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIOSSurfaceCreateFlagsMVK + pView::Ptr{Cvoid} +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIOSSurfaceMVK ) ( VkInstance instance , const VkIOSSurfaceCreateInfoMVK * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateIOSSurfaceMVK = Ptr{Cvoid} + +function vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateIOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkIOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const VkMacOSSurfaceCreateFlagsMVK = VkFlags + +struct VkMacOSSurfaceCreateInfoMVK + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMacOSSurfaceCreateFlagsMVK + pView::Ptr{Cvoid} +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMacOSSurfaceMVK ) ( VkInstance instance , const VkMacOSSurfaceCreateInfoMVK * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateMacOSSurfaceMVK = Ptr{Cvoid} + +function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateMacOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const CAMetalLayer = Cvoid + +const VkMetalSurfaceCreateFlagsEXT = VkFlags + +struct VkMetalSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMetalSurfaceCreateFlagsEXT + pLayer::Ptr{CAMetalLayer} +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMetalSurfaceEXT ) ( VkInstance instance , const VkMetalSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateMetalSurfaceEXT = Ptr{Cvoid} + +function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateMetalSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const VkViSurfaceCreateFlagsNN = VkFlags + +struct VkViSurfaceCreateInfoNN + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkViSurfaceCreateFlagsNN + window::Ptr{Cvoid} +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateViSurfaceNN ) ( VkInstance instance , const VkViSurfaceCreateInfoNN * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateViSurfaceNN = Ptr{Cvoid} + +function vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateViSurfaceNN, libvulkan), VkResult, (VkInstance, Ptr{VkViSurfaceCreateInfoNN}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# C code: +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkWin32SurfaceCreateFlagsKHR = VkFlags + +struct VkWin32SurfaceCreateInfoKHR +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWin32SurfaceKHR ) ( VkInstance instance , const VkWin32SurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWin32SurfaceKHR = Ptr{Cvoid} + +# C code: +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex ) +const PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWin32SurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex) + ccall((:vkGetPhysicalDeviceWin32PresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) +end + +struct VkImportMemoryWin32HandleInfoKHR +end + +struct VkExportMemoryWin32HandleInfoKHR +end + +struct VkMemoryWin32HandlePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleKHR ) ( VkDevice device , const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) +const PFN_vkGetMemoryWin32HandleKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandlePropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , HANDLE handle , VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties ) +const PFN_vkGetMemoryWin32HandlePropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetMemoryWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) +end + +function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties) + ccall((:vkGetMemoryWin32HandlePropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) +end + +struct VkWin32KeyedMutexAcquireReleaseInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + acquireCount::UInt32 + pAcquireSyncs::Ptr{VkDeviceMemory} + pAcquireKeys::Ptr{UInt64} + pAcquireTimeouts::Ptr{UInt32} + releaseCount::UInt32 + pReleaseSyncs::Ptr{VkDeviceMemory} + pReleaseKeys::Ptr{UInt64} +end + +struct VkImportSemaphoreWin32HandleInfoKHR +end + +struct VkExportSemaphoreWin32HandleInfoKHR +end + +struct VkD3D12FenceSubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValuesCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValuesCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreGetWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreWin32HandleKHR ) ( VkDevice device , const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo ) +const PFN_vkImportSemaphoreWin32HandleKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreWin32HandleKHR ) ( VkDevice device , const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) +const PFN_vkGetSemaphoreWin32HandleKHR = Ptr{Cvoid} + +function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo) + ccall((:vkImportSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) +end + +function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) +end + +struct VkImportFenceWin32HandleInfoKHR +end + +struct VkExportFenceWin32HandleInfoKHR +end + +struct VkFenceGetWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceWin32HandleKHR ) ( VkDevice device , const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo ) +const PFN_vkImportFenceWin32HandleKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceWin32HandleKHR ) ( VkDevice device , const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) +const PFN_vkGetFenceWin32HandleKHR = Ptr{Cvoid} + +function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo) + ccall((:vkImportFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) +end + +function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) +end + +struct VkImportMemoryWin32HandleInfoNV +end + +struct VkExportMemoryWin32HandleInfoNV +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleNV ) ( VkDevice device , VkDeviceMemory memory , VkExternalMemoryHandleTypeFlagsNV handleType , HANDLE * pHandle ) +const PFN_vkGetMemoryWin32HandleNV = Ptr{Cvoid} + +function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle) + ccall((:vkGetMemoryWin32HandleNV, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{Cint}), device, memory, handleType, pHandle) +end + +struct VkWin32KeyedMutexAcquireReleaseInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + acquireCount::UInt32 + pAcquireSyncs::Ptr{VkDeviceMemory} + pAcquireKeys::Ptr{UInt64} + pAcquireTimeoutMilliseconds::Ptr{UInt32} + releaseCount::UInt32 + pReleaseSyncs::Ptr{VkDeviceMemory} + pReleaseKeys::Ptr{UInt64} +end + +@cenum VkFullScreenExclusiveEXT::UInt32 begin + VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0 + VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1 + VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2 + VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3 + VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 2147483647 +end + +struct VkSurfaceFullScreenExclusiveInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fullScreenExclusive::VkFullScreenExclusiveEXT +end + +struct VkSurfaceCapabilitiesFullScreenExclusiveEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fullScreenExclusiveSupported::VkBool32 +end + +struct VkSurfaceFullScreenExclusiveWin32InfoEXT +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireFullScreenExclusiveModeEXT ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkAcquireFullScreenExclusiveModeEXT = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseFullScreenExclusiveModeEXT ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkReleaseFullScreenExclusiveModeEXT = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModes2EXT ) ( VkDevice device , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModes2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModes2EXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) +end + +function vkAcquireFullScreenExclusiveModeEXT(device, swapchain) + ccall((:vkAcquireFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +function vkReleaseFullScreenExclusiveModeEXT(device, swapchain) + ccall((:vkReleaseFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModes2EXT, libvulkan), VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# C code: +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Cint}, Cint), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# C code: +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Cint}, Cint), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +const VkDirectFBSurfaceCreateFlagsEXT = VkFlags + +struct VkDirectFBSurfaceCreateInfoEXT +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDirectFBSurfaceEXT ) ( VkInstance instance , const VkDirectFBSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDirectFBSurfaceEXT = Ptr{Cvoid} + +# C code: +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , IDirectFB * dfb ) +const PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT = Ptr{Cvoid} + +function vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDirectFBSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDirectFBSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb) + ccall((:vkGetPhysicalDeviceDirectFBPresentationSupportEXT, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Cint}), physicalDevice, queueFamilyIndex, dfb) +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cint}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cint}, Cint, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VkStreamDescriptorSurfaceCreateFlagsGGP = VkFlags + +struct VkStreamDescriptorSurfaceCreateInfoGGP +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateStreamDescriptorSurfaceGGP ) ( VkInstance instance , const VkStreamDescriptorSurfaceCreateInfoGGP * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateStreamDescriptorSurfaceGGP = Ptr{Cvoid} + +function vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateStreamDescriptorSurfaceGGP, libvulkan), VkResult, (VkInstance, Ptr{VkStreamDescriptorSurfaceCreateInfoGGP}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkPresentFrameTokenGGP +end + +const VULKAN_H_ = 1 + +const VK_PLATFORM_H_ = nothing + +const VKAPI_ATTR = nothing + +const VKAPI_CALL = nothing + +const VKAPI_PTR = nothing + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +# Skipping MacroDefinition: VK_DEFINE_HANDLE ( object ) typedef struct object ## _T * object ; + +# Skipping MacroDefinition: VK_DEFINE_NON_DISPATCHABLE_HANDLE ( object ) typedef struct object ## _T * object ; + +VK_MAKE_VERSION(major, minor, patch) = (uint32_t(major) << 22 | uint32_t(minor) << 12) | uint32_t(patch) + +# Skipping MacroDefinition: VK_API_VERSION_1_0 VK_MAKE_VERSION ( 1 , 0 , 0 ) + +const VK_HEADER_VERSION = 151 + +# Skipping MacroDefinition: VK_HEADER_VERSION_COMPLETE VK_MAKE_VERSION ( 1 , 2 , VK_HEADER_VERSION ) + +VK_VERSION_MAJOR(version) = uint32_t(version) >> 22 + +VK_VERSION_MINOR(version) = uint32_t(version) >> 12 & Float32(0x3f) + +VK_VERSION_PATCH(version) = uint32_t(version) & Float32(0xff) + +const VK_NULL_HANDLE = 0 + +# Skipping MacroDefinition: VK_ATTACHMENT_UNUSED ( ~ 0U ) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +# Skipping MacroDefinition: VK_QUEUE_FAMILY_IGNORED ( ~ 0U ) + +# Skipping MacroDefinition: VK_REMAINING_ARRAY_LAYERS ( ~ 0U ) + +# Skipping MacroDefinition: VK_REMAINING_MIP_LEVELS ( ~ 0U ) + +# Skipping MacroDefinition: VK_SUBPASS_EXTERNAL ( ~ 0U ) + +const VK_TRUE = 1 + +# Skipping MacroDefinition: VK_WHOLE_SIZE ( ~ 0ULL ) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +# Skipping MacroDefinition: VK_API_VERSION_1_1 VK_MAKE_VERSION ( 1 , 1 , 0 ) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +# Skipping MacroDefinition: VK_QUEUE_FAMILY_EXTERNAL ( ~ 0U - 1 ) + +const VK_VERSION_1_2 = 1 + +# Skipping MacroDefinition: VK_API_VERSION_1_2 VK_MAKE_VERSION ( 1 , 2 , 0 ) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +# Skipping MacroDefinition: VK_QUEUE_FAMILY_FOREIGN_EXT ( ~ 0U - 2 ) + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +# Skipping MacroDefinition: VK_SHADER_UNUSED_KHR ( ~ 0U ) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_ANDROID_H_ = 1 + +const VK_KHR_android_surface = 1 + +const VK_KHR_ANDROID_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_ANDROID_SURFACE_EXTENSION_NAME = "VK_KHR_android_surface" + +const VK_ANDROID_external_memory_android_hardware_buffer = 1 + +const VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION = 3 + +const VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME = "VK_ANDROID_external_memory_android_hardware_buffer" + +const VULKAN_FUCHSIA_H_ = 1 + +const VK_FUCHSIA_imagepipe_surface = 1 + +const VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION = 1 + +const VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME = "VK_FUCHSIA_imagepipe_surface" + +const VULKAN_IOS_H_ = 1 + +const VK_MVK_ios_surface = 1 + +const VK_MVK_IOS_SURFACE_SPEC_VERSION = 3 + +const VK_MVK_IOS_SURFACE_EXTENSION_NAME = "VK_MVK_ios_surface" + +const VULKAN_MACOS_H_ = 1 + +const VK_MVK_macos_surface = 1 + +const VK_MVK_MACOS_SURFACE_SPEC_VERSION = 3 + +const VK_MVK_MACOS_SURFACE_EXTENSION_NAME = "VK_MVK_macos_surface" + +const VULKAN_METAL_H_ = 1 + +const VK_EXT_metal_surface = 1 + +const VK_EXT_METAL_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_METAL_SURFACE_EXTENSION_NAME = "VK_EXT_metal_surface" + +const VULKAN_VI_H_ = 1 + +const VK_NN_vi_surface = 1 + +const VK_NN_VI_SURFACE_SPEC_VERSION = 1 + +const VK_NN_VI_SURFACE_EXTENSION_NAME = "VK_NN_vi_surface" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_WIN32_H_ = 1 + +const VK_KHR_win32_surface = 1 + +const VK_KHR_WIN32_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface" + +const VK_KHR_external_memory_win32 = 1 + +const VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_KHR_external_memory_win32" + +const VK_KHR_win32_keyed_mutex = 1 + +const VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION = 1 + +const VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_KHR_win32_keyed_mutex" + +const VK_KHR_external_semaphore_win32 = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME = "VK_KHR_external_semaphore_win32" + +const VK_KHR_external_fence_win32 = 1 + +const VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME = "VK_KHR_external_fence_win32" + +const VK_NV_external_memory_win32 = 1 + +const VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_NV_external_memory_win32" + +const VK_NV_win32_keyed_mutex = 1 + +const VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION = 2 + +const VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_NV_win32_keyed_mutex" + +const VK_EXT_full_screen_exclusive = 1 + +const VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION = 4 + +const VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME = "VK_EXT_full_screen_exclusive" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_DIRECTFB_H_ = 1 + +const VK_EXT_directfb_surface = 1 + +const VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME = "VK_EXT_directfb_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + +const VULKAN_GGP_H_ = 1 + +const VK_GGP_stream_descriptor_surface = 1 + +const VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION = 1 + +const VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME = "VK_GGP_stream_descriptor_surface" + +const VK_GGP_frame_token = 1 + +const VK_GGP_FRAME_TOKEN_SPEC_VERSION = 1 + +const VK_GGP_FRAME_TOKEN_EXTENSION_NAME = "VK_GGP_frame_token" + +# exports +const PREFIXES = ["VK_", "Vk", "vk"] +foreach(names(@__MODULE__; all=true)) do s + for prefix in PREFIXES + if startswith(string(s), prefix) + @eval export $s + end + end end end # module From c07ebfae92b2f504e67fc0e28ea6eb629d1bdbf9 Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Wed, 24 Feb 2021 22:33:11 +0900 Subject: [PATCH 03/17] Enable `VK_ENABLE_BETA_EXTENSIONS` --- gen/definitions.jl | 4 - src/LibVulkan.jl | 436 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 436 insertions(+), 4 deletions(-) diff --git a/gen/definitions.jl b/gen/definitions.jl index dcc0c55..020a98f 100644 --- a/gen/definitions.jl +++ b/gen/definitions.jl @@ -15,8 +15,6 @@ struct wl_surface <: AbstractJuliaSIT end # Mir struct MirConnection <: AbstractJuliaSIT end struct MirSurface <: AbstractJuliaSIT end -# Android -struct ANativeWindow <: AbstractJuliaSIT end # Windows struct HINSTANCE <: AbstractJuliaSIT end struct HWND <: AbstractJuliaSIT end @@ -46,7 +44,6 @@ add_definition(Dict( :wl_surface => wl_surface(), :MirConnection => MirConnection(), :MirSurface => MirSurface(), - :ANativeWindow => ANativeWindow(), :HINSTANCE => HINSTANCE(), :HWND => HWND(), :HMONITOR => HMONITOR(), @@ -72,7 +69,6 @@ Generators.translate(::wl_display, options=Dict()) = :wl_display Generators.translate(::wl_surface, options=Dict()) = :wl_surface Generators.translate(::MirConnection, options=Dict()) = :MirConnection Generators.translate(::MirSurface, options=Dict()) = :MirSurface -Generators.translate(::ANativeWindow, options=Dict()) = :ANativeWindow Generators.translate(::HINSTANCE, options=Dict()) = :HINSTANCE Generators.translate(::HWND, options=Dict()) = :HWND Generators.translate(::HMONITOR, options=Dict()) = :HMONITOR diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index d6d9f66..9be50e8 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -11119,6 +11119,422 @@ end struct VkPresentFrameTokenGGP end +mutable struct VkDeferredOperationKHR_T end + +const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} + +struct VkDeferredOperationInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + operationHandle::VkDeferredOperationKHR +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) +const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} + +# C code: +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) +const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} + +function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) + ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) +end + +function vkDestroyDeferredOperationKHR(device, operation, pAllocator) + ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) +end + +function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) + ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkGetDeferredOperationResultKHR(device, operation) + ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +function vkDeferredOperationJoinKHR(device, operation) + ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) +end + +struct VkPipelineLibraryCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + libraryCount::UInt32 + pLibraries::Ptr{VkPipeline} +end + +@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0 + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1 + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2 + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR = 2147483647 +end + +struct VkDeviceOrHostAddressKHR + data::NTuple{8, UInt8} +end + +struct VkDeviceOrHostAddressConstKHR + data::NTuple{8, UInt8} +end + +struct VkAccelerationStructureBuildOffsetInfoKHR + primitiveCount::UInt32 + primitiveOffset::UInt32 + firstVertex::UInt32 + transformOffset::UInt32 +end + +struct VkRayTracingShaderGroupCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 + pShaderGroupCaptureReplayHandle::Ptr{Cvoid} +end + +struct VkRayTracingPipelineInterfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPayloadSize::UInt32 + maxAttributeSize::UInt32 + maxCallableSize::UInt32 +end + +struct VkRayTracingPipelineCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoKHR} + maxRecursionDepth::UInt32 + libraries::VkPipelineLibraryCreateInfoKHR + pLibraryInterface::Ptr{VkRayTracingPipelineInterfaceCreateInfoKHR} + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkAccelerationStructureGeometryTrianglesDataKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexFormat::VkFormat + vertexData::VkDeviceOrHostAddressConstKHR + vertexStride::VkDeviceSize + indexType::VkIndexType + indexData::VkDeviceOrHostAddressConstKHR + transformData::VkDeviceOrHostAddressConstKHR +end + +struct VkAccelerationStructureGeometryAabbsDataKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + data::VkDeviceOrHostAddressConstKHR + stride::VkDeviceSize +end + +struct VkAccelerationStructureGeometryInstancesDataKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + arrayOfPointers::VkBool32 + data::VkDeviceOrHostAddressConstKHR +end + +struct VkAccelerationStructureGeometryDataKHR + data::NTuple{64, UInt8} +end + +struct VkAccelerationStructureGeometryKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkAccelerationStructureGeometryDataKHR + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureBuildGeometryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeKHR + flags::VkBuildAccelerationStructureFlagsKHR + update::VkBool32 + srcAccelerationStructure::VkAccelerationStructureKHR + dstAccelerationStructure::VkAccelerationStructureKHR + geometryArrayOfPointers::VkBool32 + geometryCount::UInt32 + ppGeometries::Ptr{Ptr{VkAccelerationStructureGeometryKHR}} + scratchData::VkDeviceOrHostAddressKHR +end + +struct VkAccelerationStructureCreateGeometryTypeInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + maxPrimitiveCount::UInt32 + indexType::VkIndexType + maxVertexCount::UInt32 + vertexFormat::VkFormat + allowsTransforms::VkBool32 +end + +struct VkAccelerationStructureCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + type::VkAccelerationStructureTypeKHR + flags::VkBuildAccelerationStructureFlagsKHR + maxGeometryCount::UInt32 + pGeometryInfos::Ptr{VkAccelerationStructureCreateGeometryTypeInfoKHR} + deviceAddress::VkDeviceAddress +end + +struct VkAccelerationStructureMemoryRequirementsInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeKHR + buildType::VkAccelerationStructureBuildTypeKHR + accelerationStructure::VkAccelerationStructureKHR +end + +struct VkPhysicalDeviceRayTracingFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + rayTracing::VkBool32 + rayTracingShaderGroupHandleCaptureReplay::VkBool32 + rayTracingShaderGroupHandleCaptureReplayMixed::VkBool32 + rayTracingAccelerationStructureCaptureReplay::VkBool32 + rayTracingIndirectTraceRays::VkBool32 + rayTracingIndirectAccelerationStructureBuild::VkBool32 + rayTracingHostAccelerationStructureCommands::VkBool32 + rayQuery::VkBool32 + rayTracingPrimitiveCulling::VkBool32 +end + +struct VkPhysicalDeviceRayTracingPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxPrimitiveCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 + shaderGroupHandleCaptureReplaySize::UInt32 +end + +struct VkAccelerationStructureDeviceAddressInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR +end + +struct VkAccelerationStructureVersionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + versionData::Ptr{UInt8} +end + +struct VkStridedBufferRegionKHR + buffer::VkBuffer + offset::VkDeviceSize + stride::VkDeviceSize + size::VkDeviceSize +end + +struct VkTraceRaysIndirectCommandKHR + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkCopyAccelerationStructureToMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkDeviceOrHostAddressKHR + mode::VkCopyAccelerationStructureModeKHR +end + +struct VkCopyMemoryToAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkDeviceOrHostAddressConstKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR +end + +struct VkCopyAccelerationStructureInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + src::VkAccelerationStructureKHR + dst::VkAccelerationStructureKHR + mode::VkCopyAccelerationStructureModeKHR +end + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsKHR ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoKHR * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildOffsetInfoKHR * const * ppOffsetInfos ) +const PFN_vkCmdBuildAccelerationStructureKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureBuildGeometryInfoKHR * pInfo , VkBuffer indirectBuffer , VkDeviceSize indirectOffset , uint32_t indirectStride ) +const PFN_vkCmdBuildAccelerationStructureIndirectKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructureKHR ) ( VkDevice device , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildOffsetInfoKHR * const * ppOffsetInfos ) +const PFN_vkBuildAccelerationStructureKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) +const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) +const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) +const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedBufferRegionKHR * pRaygenShaderBindingTable , const VkStridedBufferRegionKHR * pMissShaderBindingTable , const VkStridedBufferRegionKHR * pHitShaderBindingTable , const VkStridedBufferRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} + +# C code: +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) +const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} + +# C code: +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedBufferRegionKHR * pRaygenShaderBindingTable , const VkStridedBufferRegionKHR * pMissShaderBindingTable , const VkStridedBufferRegionKHR * pHitShaderBindingTable , const VkStridedBufferRegionKHR * pCallableShaderBindingTable , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} + +# C code: +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionKHR * version ) +const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} + +function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkGetAccelerationStructureMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoKHR}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdBuildAccelerationStructureKHR(commandBuffer, infoCount, pInfos, ppOffsetInfos) + ccall((:vkCmdBuildAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildOffsetInfoKHR}}), commandBuffer, infoCount, pInfos, ppOffsetInfos) +end + +function vkCmdBuildAccelerationStructureIndirectKHR(commandBuffer, pInfo, indirectBuffer, indirectOffset, indirectStride) + ccall((:vkCmdBuildAccelerationStructureIndirectKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pInfo, indirectBuffer, indirectOffset, indirectStride) +end + +function vkBuildAccelerationStructureKHR(device, infoCount, pInfos, ppOffsetInfos) + ccall((:vkBuildAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildOffsetInfoKHR}}), device, infoCount, pInfos, ppOffsetInfos) +end + +function vkCopyAccelerationStructureKHR(device, pInfo) + ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkCopyAccelerationStructureInfoKHR}), device, pInfo) +end + +function vkCopyAccelerationStructureToMemoryKHR(device, pInfo) + ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, pInfo) +end + +function vkCopyMemoryToAccelerationStructureKHR(device, pInfo) + ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, pInfo) +end + +function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) + ccall((:vkWriteAccelerationStructuresPropertiesKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) +end + +function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) +end + +function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) +end + +function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) + ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) +end + +function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) + ccall((:vkCmdTraceRaysKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkStridedBufferRegionKHR}, Ptr{VkStridedBufferRegionKHR}, Ptr{VkStridedBufferRegionKHR}, Ptr{VkStridedBufferRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) +end + +function vkCreateRayTracingPipelinesKHR(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesKHR, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) + ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) +end + +function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, buffer, offset) + ccall((:vkCmdTraceRaysIndirectKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkStridedBufferRegionKHR}, Ptr{VkStridedBufferRegionKHR}, Ptr{VkStridedBufferRegionKHR}, Ptr{VkStridedBufferRegionKHR}, VkBuffer, VkDeviceSize), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, buffer, offset) +end + +function vkGetDeviceAccelerationStructureCompatibilityKHR(device, version) + ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureVersionKHR}), device, version) +end + const VULKAN_H_ = 1 const VK_PLATFORM_H_ = nothing @@ -12491,6 +12907,26 @@ const VK_GGP_FRAME_TOKEN_SPEC_VERSION = 1 const VK_GGP_FRAME_TOKEN_EXTENSION_NAME = "VK_GGP_frame_token" +const VULKAN_BETA_H_ = 1 + +const VK_KHR_deferred_host_operations = 1 + +const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 3 + +const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" + +const VK_KHR_pipeline_library = 1 + +const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" + +const VK_KHR_ray_tracing = 1 + +const VK_KHR_RAY_TRACING_SPEC_VERSION = 8 + +const VK_KHR_RAY_TRACING_EXTENSION_NAME = "VK_KHR_ray_tracing" + # exports const PREFIXES = ["VK_", "Vk", "vk"] foreach(names(@__MODULE__; all=true)) do s From 3a0d214e5d36f7a4236f4b4f6c266297308912fc Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Wed, 24 Feb 2021 22:34:53 +0900 Subject: [PATCH 04/17] Remove old bindings --- gen/vk_api.jl | 3851 ---------------- gen/vk_common.jl | 11088 --------------------------------------------- 2 files changed, 14939 deletions(-) delete mode 100755 gen/vk_api.jl delete mode 100755 gen/vk_common.jl diff --git a/gen/vk_api.jl b/gen/vk_api.jl deleted file mode 100755 index ca995ba..0000000 --- a/gen/vk_api.jl +++ /dev/null @@ -1,3851 +0,0 @@ -# Julia wrapper for header: /home/belmant/.julia/artifacts/2172e04648d8f007f61b8348c3172efb89619c1c/include/vulkan/vulkan.h -# Automatically generated using Clang.jl wrap_c - - -function vkCreateInstance(pCreateInfo, pAllocator, pInstance) - ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) -end - -function vkDestroyInstance(instance, pAllocator) - ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) -end - -function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) - ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) -end - -function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) -end - -function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) -end - -function vkGetInstanceProcAddr(instance, pName) - ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Cstring), instance, pName) -end - -function vkGetDeviceProcAddr(device, pName) - ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Cstring), device, pName) -end - -function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) - ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) -end - -function vkDestroyDevice(device, pAllocator) - ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) -end - -function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) - ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Cstring, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) -end - -function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) - ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Cstring, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) -end - -function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) - ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) -end - -function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) - ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) - ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) -end - -function vkQueueSubmit(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) -end - -function vkQueueWaitIdle(queue) - ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) -end - -function vkDeviceWaitIdle(device) - ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) -end - -function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) - ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) -end - -function vkFreeMemory(device, memory, pAllocator) - ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) -end - -function vkMapMemory(device, memory, offset, size, flags, ppData) - ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) -end - -function vkUnmapMemory(device, memory) - ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) -end - -function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) - ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) -end - -function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) - ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) -end - -function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) - ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) -end - -function vkBindBufferMemory(device, buffer, memory, memoryOffset) - ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) -end - -function vkBindImageMemory(device, image, memory, memoryOffset) - ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) -end - -function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) -end - -function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) - ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) -end - -function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) - ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) -end - -function vkCreateFence(device, pCreateInfo, pAllocator, pFence) - ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) -end - -function vkDestroyFence(device, fence, pAllocator) - ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) -end - -function vkResetFences(device, fenceCount, pFences) - ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) -end - -function vkGetFenceStatus(device, fence) - ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) -end - -function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) - ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) -end - -function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) - ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) -end - -function vkDestroySemaphore(device, semaphore, pAllocator) - ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) -end - -function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) - ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) -end - -function vkDestroyEvent(device, event, pAllocator) - ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) -end - -function vkGetEventStatus(device, event) - ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) -end - -function vkSetEvent(device, event) - ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) -end - -function vkResetEvent(device, event) - ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) -end - -function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) - ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) -end - -function vkDestroyQueryPool(device, queryPool, pAllocator) - ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) -end - -function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) - ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) -end - -function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) - ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) -end - -function vkDestroyBuffer(device, buffer, pAllocator) - ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) -end - -function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) - ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) -end - -function vkDestroyBufferView(device, bufferView, pAllocator) - ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) -end - -function vkCreateImage(device, pCreateInfo, pAllocator, pImage) - ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) -end - -function vkDestroyImage(device, image, pAllocator) - ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) -end - -function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) -end - -function vkCreateImageView(device, pCreateInfo, pAllocator, pView) - ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) -end - -function vkDestroyImageView(device, imageView, pAllocator) - ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) -end - -function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) - ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) -end - -function vkDestroyShaderModule(device, shaderModule, pAllocator) - ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) -end - -function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) - ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) -end - -function vkDestroyPipelineCache(device, pipelineCache, pAllocator) - ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) -end - -function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) - ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) -end - -function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) -end - -function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) - ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) - ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkDestroyPipeline(device, pipeline, pAllocator) - ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) -end - -function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) - ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) -end - -function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) - ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) -end - -function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) - ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) -end - -function vkDestroySampler(device, sampler, pAllocator) - ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) -end - -function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) - ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) -end - -function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) - ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) -end - -function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) - ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) -end - -function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) - ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) -end - -function vkResetDescriptorPool(device, descriptorPool, flags) - ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) -end - -function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) - ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) -end - -function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) - ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) -end - -function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) - ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) -end - -function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) - ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) -end - -function vkDestroyFramebuffer(device, framebuffer, pAllocator) - ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) -end - -function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkDestroyRenderPass(device, renderPass, pAllocator) - ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) -end - -function vkGetRenderAreaGranularity(device, renderPass, pGranularity) - ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) -end - -function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) - ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) -end - -function vkDestroyCommandPool(device, commandPool, pAllocator) - ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) -end - -function vkResetCommandPool(device, commandPool, flags) - ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) -end - -function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) - ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) -end - -function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) - ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) -end - -function vkBeginCommandBuffer(commandBuffer, pBeginInfo) - ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) -end - -function vkEndCommandBuffer(commandBuffer) - ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) -end - -function vkResetCommandBuffer(commandBuffer, flags) - ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) -end - -function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) - ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) -end - -function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) - ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) -end - -function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) - ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) -end - -function vkCmdSetLineWidth(commandBuffer, lineWidth) - ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) -end - -function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) - ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) -end - -function vkCmdSetBlendConstants(commandBuffer, blendConstants) - ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, NTuple{4, Cfloat}), commandBuffer, blendConstants) -end - -function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) - ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) -end - -function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) - ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) -end - -function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) - ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) -end - -function vkCmdSetStencilReference(commandBuffer, faceMask, reference) - ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) -end - -function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) - ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) -end - -function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) - ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) -end - -function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) - ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) -end - -function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) - ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) -end - -function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) - ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) -end - -function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end - -function vkCmdDispatchIndirect(commandBuffer, buffer, offset) - ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) -end - -function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) - ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) -end - -function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) - ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) - ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) -end - -function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) - ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) - ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) -end - -function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) - ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) -end - -function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) - ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) -end - -function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) - ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) -end - -function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) - ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) -end - -function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) - ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) -end - -function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) - ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdSetEvent(commandBuffer, event, stageMask) - ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) -end - -function vkCmdResetEvent(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) -end - -function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) - ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) -end - -function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) - ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) -end - -function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) - ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) -end - -function vkCmdEndQuery(commandBuffer, queryPool, query) - ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) -end - -function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) - ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) -end - -function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) - ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) -end - -function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) - ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) -end - -function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) - ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) -end - -function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) - ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) -end - -function vkCmdNextSubpass(commandBuffer, contents) - ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) -end - -function vkCmdEndRenderPass(commandBuffer) - ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) - ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) -end - -function vkEnumerateInstanceVersion(pApiVersion) - ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) -end - -function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) - ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkBindImageMemory2(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) - ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) -end - -function vkCmdSetDeviceMask(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) -end - -function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) -end - -function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) -end - -function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) - ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end - -function vkTrimCommandPool(device, commandPool, flags) - ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) -end - -function vkGetDeviceQueue2(device, pQueueInfo, pQueue) - ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) -end - -function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) -end - -function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) -end - -function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) -end - -function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) -end - -function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) -end - -function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) -end - -function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) - ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) -end - -function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) - ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) -end - -function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) - ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) -end - -function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end - -function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) -end - -function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) -end - -function vkResetQueryPool(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) -end - -function vkGetSemaphoreCounterValue(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end - -function vkWaitSemaphores(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end - -function vkSignalSemaphore(device, pSignalInfo) - ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) -end - -function vkGetBufferDeviceAddress(device, pInfo) - ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetBufferOpaqueCaptureAddress(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end - -function vkDestroySurfaceKHR(instance, surface, pAllocator) - ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end - -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) -end - -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) -end - -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) -end - -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) -end - -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) - ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) -end - -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) -end - -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) -end - -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) - ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) -end - -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) -end - -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) -end - -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) -end - -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) -end - -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) -end - -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) -end - -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) -end - -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) - ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) -end - -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) -end - -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) - ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) -end - -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end - -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) - ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) -end - -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) -end - -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) -end - -function vkTrimCommandPoolKHR(device, commandPool, flags) - ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) -end - -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) -end - -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) -end - -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) -end - -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) - ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) -end - -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) - ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) -end - -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) - ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) -end - -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) -end - -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) -end - -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) -end - -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) -end - -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end - -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) -end - -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) -end - -function vkGetSwapchainStatusKHR(device, swapchain) - ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) - ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) -end - -function vkImportFenceFdKHR(device, pImportFenceFdInfo) - ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) -end - -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) - ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) -end - -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) -end - -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) -end - -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) -end - -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) -end - -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) -end - -function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) -end - -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) -end - -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) -end - -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) -end - -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) - ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) -end - -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end - -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end - -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) -end - -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) -end - -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, NTuple{2, VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) -end - -function vkGetBufferDeviceAddressKHR(device, pInfo) - ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end - -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) -end - -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) -end - -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end - -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end - -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end - -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfoKHR}), commandBuffer, event, pDependencyInfo) -end - -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2KHR), commandBuffer, event, stageMask) -end - -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfoKHR}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end - -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfoKHR}), commandBuffer, pDependencyInfo) -end - -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2KHR, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end - -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2KHR}, VkFence), queue, submitCount, pSubmits, fence) -end - -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2KHR, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) -end - -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) -end - -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2KHR}), commandBuffer, pCopyBufferInfo) -end - -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2KHR}), commandBuffer, pCopyImageInfo) -end - -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2KHR}), commandBuffer, pCopyBufferToImageInfo) -end - -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2KHR}), commandBuffer, pCopyImageToBufferInfo) -end - -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2KHR}), commandBuffer, pBlitImageInfo) -end - -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2KHR}), commandBuffer, pResolveImageInfo) -end - -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) - ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) -end - -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) -end - -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) - ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Cstring, Cstring), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) -end - -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end - -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) -end - -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end - -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end - -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) - ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) -end - -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end - -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end - -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) -end - -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) -end - -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) - ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) -end - -function vkGetImageViewHandleNVX(device, pInfo) - ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end - -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end - -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) - ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) -end - -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) - ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) -end - -function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) - ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) -end - -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) - ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) -end - -function vkReleaseDisplayEXT(physicalDevice, display) - ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) -end - -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) -end - -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) - ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) -end - -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) -end - -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) - ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) -end - -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) -end - -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) - ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) -end - -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) -end - -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) -end - -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) - ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) -end - -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) - ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) -end - -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) -end - -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end - -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) -end - -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end - -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end - -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end - -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) -end - -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) -end - -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) -end - -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end - -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) -end - -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) -end - -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) - ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) -end - -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) -end - -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) -end - -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) -end - -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) -end - -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) -end - -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) -end - -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end - -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end - -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) -end - -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) -end - -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) - ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) -end - -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) -end - -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) - ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) -end - -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) - ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) - ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) - ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) -end - -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end - -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) -end - -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) - ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) -end - -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) -end - -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) - ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) -end - -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) - ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) -end - -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) -end - -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) - ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) -end - -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) - ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) -end - -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) -end - -function vkInitializePerformanceApiINTEL(device, pInitializeInfo) - ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) -end - -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) -end - -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) -end - -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) -end - -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) -end - -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) -end - -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) -end - -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) -end - -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) -end - -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) -end - -function vkGetBufferDeviceAddressEXT(device, pInfo) - ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) -end - -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) - ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) -end - -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) - ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) -end - -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) -end - -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) -end - -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) -end - -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) -end - -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) -end - -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) -end - -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) - ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) -end - -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end - -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) -end - -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) -end - -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) -end - -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) -end - -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) - ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) -end - -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) - ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) -end - -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) - ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) -end - -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) -end - -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) -end - -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) -end - -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) -end - -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) -end - -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) -end - -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) -end - -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, NTuple{2, VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) -end - -function vkAcquireWinrtDisplayNV(physicalDevice, display) - ccall((:vkAcquireWinrtDisplayNV, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) -end - -function vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay) - ccall((:vkGetWinrtDisplayNV, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{VkDisplayKHR}), physicalDevice, deviceRelativeId, pDisplay) -end - -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) -end - -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) -end - -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) -end - -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) -end - -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) -end - -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) -end - -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) -end - -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end - -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end - -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end - -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) - ccall((:vkCmdBuildAccelerationStructuresIndirectKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end - -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkBuildAccelerationStructuresKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end - -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end - -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end - -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end - -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) - ccall((:vkWriteAccelerationStructuresPropertiesKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end - -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end - -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end - -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end - -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end - -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end - -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end - -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) - ccall((:vkGetAccelerationStructureBuildSizesKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end - -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) - ccall((:vkCmdTraceRaysKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end - -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) - ccall((:vkCreateRayTracingPipelinesKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) - ccall((:vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirectKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end - -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end - -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end - -function vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateAndroidSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkAndroidSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties) - ccall((:vkGetAndroidHardwareBufferPropertiesANDROID, libvulkan), VkResult, (VkDevice, Ptr{AHardwareBuffer}, Ptr{VkAndroidHardwareBufferPropertiesANDROID}), device, buffer, pProperties) -end - -function vkGetMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer) - ccall((:vkGetMemoryAndroidHardwareBufferANDROID, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetAndroidHardwareBufferInfoANDROID}, Ptr{Ptr{AHardwareBuffer}}), device, pInfo, pBuffer) -end - -function vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateImagePipeSurfaceFUCHSIA, libvulkan), VkResult, (VkInstance, Ptr{VkImagePipeSurfaceCreateInfoFUCHSIA}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle) - ccall((:vkGetMemoryZirconHandleFUCHSIA, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetZirconHandleInfoFUCHSIA}, Ptr{Cint}), device, pGetZirconHandleInfo, pZirconHandle) -end - -function vkGetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties) - ccall((:vkGetMemoryZirconHandlePropertiesFUCHSIA, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryZirconHandlePropertiesFUCHSIA}), device, handleType, zirconHandle, pMemoryZirconHandleProperties) -end - -function vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo) - ccall((:vkImportSemaphoreZirconHandleFUCHSIA, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreZirconHandleInfoFUCHSIA}), device, pImportSemaphoreZirconHandleInfo) -end - -function vkGetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle) - ccall((:vkGetSemaphoreZirconHandleFUCHSIA, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetZirconHandleInfoFUCHSIA}, Ptr{Cint}), device, pGetZirconHandleInfo, pZirconHandle) -end - -function vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateIOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkIOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateMacOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateMetalSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateViSurfaceNN, libvulkan), VkResult, (VkInstance, Ptr{VkViSurfaceCreateInfoNN}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) - ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end - -function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWin32SurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex) - ccall((:vkGetPhysicalDeviceWin32PresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) -end - -function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetMemoryWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties) - ccall((:vkGetMemoryWin32HandlePropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) -end - -function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo) - ccall((:vkImportSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) -end - -function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo) - ccall((:vkImportFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) -end - -function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle) - ccall((:vkGetMemoryWin32HandleNV, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{Cint}), device, memory, handleType, pHandle) -end - -function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModes2EXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) -end - -function vkAcquireFullScreenExclusiveModeEXT(device, swapchain) - ccall((:vkAcquireFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -function vkReleaseFullScreenExclusiveModeEXT(device, swapchain) - ccall((:vkReleaseFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModes2EXT, libvulkan), VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) -end - -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) - ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) -end - -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) - ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end - -function vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDirectFBSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDirectFBSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb) - ccall((:vkGetPhysicalDeviceDirectFBPresentationSupportEXT, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Cint}), physicalDevice, queueFamilyIndex, dfb) -end - -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) - ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end - -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) - ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end - -function vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateStreamDescriptorSurfaceGGP, libvulkan), VkResult, (VkInstance, Ptr{VkStreamDescriptorSurfaceCreateInfoGGP}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateScreenSurfaceQNX(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateScreenSurfaceQNX, libvulkan), VkResult, (VkInstance, Ptr{VkScreenSurfaceCreateInfoQNX}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceScreenPresentationSupportQNX(physicalDevice, queueFamilyIndex, window) - ccall((:vkGetPhysicalDeviceScreenPresentationSupportQNX, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{_screen_window}), physicalDevice, queueFamilyIndex, window) -end - -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) -end - -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) -end - -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) -end - -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) -end - -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoGetMemoryPropertiesKHR}), device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements) -end - -function vkBindVideoSessionMemoryKHR(device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkVideoBindMemoryKHR}), device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories) -end - -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end - -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) -end - -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) -end - -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) -end - -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) -end - -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) -end - -function vkCmdDecodeVideoKHR(commandBuffer, pFrameInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pFrameInfo) -end - -function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) - ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) -end - -function vkCreateInstance(pCreateInfo, pAllocator, pInstance, fun_ptr) - ccall(fun_ptr, VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) -end - -function vkDestroyInstance(instance, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) -end - -function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) -end - -function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) -end - -function vkGetPhysicalDeviceProperties(physicalDevice, pProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) -end - -function vkGetInstanceProcAddr(instance, pName, fun_ptr) - ccall(fun_ptr, PFN_vkVoidFunction, (VkInstance, Cstring), instance, pName) -end - -function vkGetDeviceProcAddr(device, pName, fun_ptr) - ccall(fun_ptr, PFN_vkVoidFunction, (VkDevice, Cstring), device, pName) -end - -function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) -end - -function vkDestroyDevice(device, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) -end - -function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (Cstring, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) -end - -function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Cstring, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) -end - -function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) -end - -function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) -end - -function vkQueueSubmit(queue, submitCount, pSubmits, fence, fun_ptr) - ccall(fun_ptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) -end - -function vkQueueWaitIdle(queue, fun_ptr) - ccall(fun_ptr, VkResult, (VkQueue,), queue) -end - -function vkDeviceWaitIdle(device, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice,), device) -end - -function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) -end - -function vkFreeMemory(device, memory, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) -end - -function vkMapMemory(device, memory, offset, size, flags, ppData, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) -end - -function vkUnmapMemory(device, memory, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDeviceMemory), device, memory) -end - -function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) -end - -function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) -end - -function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) -end - -function vkBindBufferMemory(device, buffer, memory, memoryOffset, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) -end - -function vkBindImageMemory(device, image, memory, memoryOffset, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) -end - -function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) -end - -function vkGetImageMemoryRequirements(device, image, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) -end - -function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence, fun_ptr) - ccall(fun_ptr, VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) -end - -function vkCreateFence(device, pCreateInfo, pAllocator, pFence, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) -end - -function vkDestroyFence(device, fence, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) -end - -function vkResetFences(device, fenceCount, pFences, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) -end - -function vkGetFenceStatus(device, fence, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkFence), device, fence) -end - -function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) -end - -function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) -end - -function vkDestroySemaphore(device, semaphore, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) -end - -function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) -end - -function vkDestroyEvent(device, event, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) -end - -function vkGetEventStatus(device, event, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkEvent), device, event) -end - -function vkSetEvent(device, event, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkEvent), device, event) -end - -function vkResetEvent(device, event, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkEvent), device, event) -end - -function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) -end - -function vkDestroyQueryPool(device, queryPool, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) -end - -function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) -end - -function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) -end - -function vkDestroyBuffer(device, buffer, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) -end - -function vkCreateBufferView(device, pCreateInfo, pAllocator, pView, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) -end - -function vkDestroyBufferView(device, bufferView, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) -end - -function vkCreateImage(device, pCreateInfo, pAllocator, pImage, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) -end - -function vkDestroyImage(device, image, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) -end - -function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) -end - -function vkCreateImageView(device, pCreateInfo, pAllocator, pView, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) -end - -function vkDestroyImageView(device, imageView, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) -end - -function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) -end - -function vkDestroyShaderModule(device, shaderModule, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) -end - -function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) -end - -function vkDestroyPipelineCache(device, pipelineCache, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) -end - -function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) -end - -function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) -end - -function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkDestroyPipeline(device, pipeline, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) -end - -function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) -end - -function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) -end - -function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) -end - -function vkDestroySampler(device, sampler, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) -end - -function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) -end - -function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) -end - -function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) -end - -function vkDestroyDescriptorPool(device, descriptorPool, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) -end - -function vkResetDescriptorPool(device, descriptorPool, flags, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) -end - -function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) -end - -function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) -end - -function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) -end - -function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) -end - -function vkDestroyFramebuffer(device, framebuffer, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) -end - -function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkDestroyRenderPass(device, renderPass, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) -end - -function vkGetRenderAreaGranularity(device, renderPass, pGranularity, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) -end - -function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) -end - -function vkDestroyCommandPool(device, commandPool, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) -end - -function vkResetCommandPool(device, commandPool, flags, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) -end - -function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) -end - -function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) -end - -function vkBeginCommandBuffer(commandBuffer, pBeginInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) -end - -function vkEndCommandBuffer(commandBuffer, fun_ptr) - ccall(fun_ptr, VkResult, (VkCommandBuffer,), commandBuffer) -end - -function vkResetCommandBuffer(commandBuffer, flags, fun_ptr) - ccall(fun_ptr, VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) -end - -function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) -end - -function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) -end - -function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) -end - -function vkCmdSetLineWidth(commandBuffer, lineWidth, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) -end - -function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) -end - -function vkCmdSetBlendConstants(commandBuffer, blendConstants, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, NTuple{4, Cfloat}), commandBuffer, blendConstants) -end - -function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) -end - -function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) -end - -function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) -end - -function vkCmdSetStencilReference(commandBuffer, faceMask, reference, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) -end - -function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) -end - -function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) -end - -function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) -end - -function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) -end - -function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) -end - -function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end - -function vkCmdDispatchIndirect(commandBuffer, buffer, offset, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) -end - -function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) -end - -function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) -end - -function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) -end - -function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) -end - -function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) -end - -function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) -end - -function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) -end - -function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) -end - -function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdSetEvent(commandBuffer, event, stageMask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) -end - -function vkCmdResetEvent(commandBuffer, event, stageMask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) -end - -function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) -end - -function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) -end - -function vkCmdBeginQuery(commandBuffer, queryPool, query, flags, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) -end - -function vkCmdEndQuery(commandBuffer, queryPool, query, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) -end - -function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) -end - -function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) -end - -function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) -end - -function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) -end - -function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) -end - -function vkCmdNextSubpass(commandBuffer, contents, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) -end - -function vkCmdEndRenderPass(commandBuffer, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) -end - -function vkEnumerateInstanceVersion(pApiVersion, fun_ptr) - ccall(fun_ptr, VkResult, (Ptr{UInt32},), pApiVersion) -end - -function vkBindBufferMemory2(device, bindInfoCount, pBindInfos, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkBindImageMemory2(device, bindInfoCount, pBindInfos, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) -end - -function vkCmdSetDeviceMask(commandBuffer, deviceMask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) -end - -function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) -end - -function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) -end - -function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end - -function vkTrimCommandPool(device, commandPool, flags, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) -end - -function vkGetDeviceQueue2(device, pQueueInfo, pQueue, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) -end - -function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) -end - -function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) -end - -function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) -end - -function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) -end - -function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) -end - -function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) -end - -function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) -end - -function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) -end - -function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) -end - -function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end - -function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) -end - -function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) -end - -function vkResetQueryPool(device, queryPool, firstQuery, queryCount, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) -end - -function vkGetSemaphoreCounterValue(device, semaphore, pValue, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end - -function vkWaitSemaphores(device, pWaitInfo, timeout, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end - -function vkSignalSemaphore(device, pSignalInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) -end - -function vkGetBufferDeviceAddress(device, pInfo, fun_ptr) - ccall(fun_ptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetBufferOpaqueCaptureAddress(device, pInfo, fun_ptr) - ccall(fun_ptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, fun_ptr) - ccall(fun_ptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end - -function vkDestroySurfaceKHR(instance, surface, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end - -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) -end - -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) -end - -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) -end - -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) -end - -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) -end - -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) -end - -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) -end - -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) -end - -function vkQueuePresentKHR(queue, pPresentInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) -end - -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) -end - -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) -end - -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) -end - -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) -end - -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) -end - -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) -end - -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) -end - -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) -end - -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) -end - -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end - -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) -end - -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) -end - -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) -end - -function vkTrimCommandPoolKHR(device, commandPool, flags, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) -end - -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) -end - -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) -end - -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) -end - -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) -end - -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) -end - -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) -end - -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) -end - -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) -end - -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) -end - -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) -end - -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end - -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) -end - -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) -end - -function vkGetSwapchainStatusKHR(device, swapchain, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) -end - -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) -end - -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) -end - -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) -end - -function vkAcquireProfilingLockKHR(device, pInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) -end - -function vkReleaseProfilingLockKHR(device, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice,), device) -end - -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) -end - -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) -end - -function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) -end - -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) -end - -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) -end - -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) -end - -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) -end - -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end - -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end - -function vkSignalSemaphoreKHR(device, pSignalInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) -end - -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) -end - -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, NTuple{2, VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) -end - -function vkGetBufferDeviceAddressKHR(device, pInfo, fun_ptr) - ccall(fun_ptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fun_ptr) - ccall(fun_ptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fun_ptr) - ccall(fun_ptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end - -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) -end - -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) -end - -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fun_ptr) - ccall(fun_ptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -function vkGetDeferredOperationResultKHR(device, operation, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -function vkDeferredOperationJoinKHR(device, operation, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end - -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end - -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end - -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfoKHR}), commandBuffer, event, pDependencyInfo) -end - -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2KHR), commandBuffer, event, stageMask) -end - -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfoKHR}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end - -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfoKHR}), commandBuffer, pDependencyInfo) -end - -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2KHR, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end - -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fun_ptr) - ccall(fun_ptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2KHR}, VkFence), queue, submitCount, pSubmits, fence) -end - -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2KHR, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) -end - -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) -end - -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2KHR}), commandBuffer, pCopyBufferInfo) -end - -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2KHR}), commandBuffer, pCopyImageInfo) -end - -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2KHR}), commandBuffer, pCopyBufferToImageInfo) -end - -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2KHR}), commandBuffer, pCopyImageToBufferInfo) -end - -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2KHR}), commandBuffer, pBlitImageInfo) -end - -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2KHR}), commandBuffer, pResolveImageInfo) -end - -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) -end - -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) -end - -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fun_ptr) - ccall(fun_ptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Cstring, Cstring), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) -end - -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end - -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) -end - -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end - -function vkCmdDebugMarkerEndEXT(commandBuffer, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end - -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) -end - -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end - -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end - -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) -end - -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) -end - -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) -end - -function vkGetImageViewHandleNVX(device, pInfo, fun_ptr) - ccall(fun_ptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end - -function vkGetImageViewAddressNVX(device, imageView, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end - -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) -end - -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) -end - -function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) -end - -function vkCmdEndConditionalRenderingEXT(commandBuffer, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) -end - -function vkReleaseDisplayEXT(physicalDevice, display, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) -end - -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) -end - -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) -end - -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) -end - -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) -end - -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) -end - -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) -end - -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) -end - -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) -end - -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) -end - -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) -end - -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) -end - -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end - -function vkQueueEndDebugUtilsLabelEXT(queue, fun_ptr) - ccall(fun_ptr, Cvoid, (VkQueue,), queue) -end - -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end - -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end - -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end - -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) -end - -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) -end - -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) -end - -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end - -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) -end - -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) -end - -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) -end - -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) -end - -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) -end - -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) -end - -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) -end - -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) -end - -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) -end - -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end - -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end - -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) -end - -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) -end - -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) -end - -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) -end - -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) -end - -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) -end - -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end - -function vkCompileDeferredNV(device, pipeline, shader, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) -end - -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) -end - -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) -end - -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) -end - -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) -end - -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) -end - -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) -end - -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) -end - -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) -end - -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) -end - -function vkUninitializePerformanceApiINTEL(device, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice,), device) -end - -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) -end - -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) -end - -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) -end - -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) -end - -function vkReleasePerformanceConfigurationINTEL(device, configuration, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) -end - -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fun_ptr) - ccall(fun_ptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) -end - -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) -end - -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) -end - -function vkGetBufferDeviceAddressEXT(device, pInfo, fun_ptr) - ccall(fun_ptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) -end - -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) -end - -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) -end - -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) -end - -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) -end - -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) -end - -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) -end - -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) -end - -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) -end - -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) -end - -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end - -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) -end - -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) -end - -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) -end - -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) -end - -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) -end - -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) -end - -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) -end - -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) -end - -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) -end - -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) -end - -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) -end - -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) -end - -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) -end - -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) -end - -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, NTuple{2, VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) -end - -function vkAcquireWinrtDisplayNV(physicalDevice, display, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) -end - -function vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{VkDisplayKHR}), physicalDevice, deviceRelativeId, pDisplay) -end - -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) -end - -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) -end - -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) -end - -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) -end - -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) -end - -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) -end - -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) -end - -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end - -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end - -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end - -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end - -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end - -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end - -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end - -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end - -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end - -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end - -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end - -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end - -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fun_ptr) - ccall(fun_ptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end - -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end - -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end - -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end - -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end - -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end - -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fun_ptr) - ccall(fun_ptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end - -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end - -function vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkAndroidSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{AHardwareBuffer}, Ptr{VkAndroidHardwareBufferPropertiesANDROID}), device, buffer, pProperties) -end - -function vkGetMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkMemoryGetAndroidHardwareBufferInfoANDROID}, Ptr{Ptr{AHardwareBuffer}}), device, pInfo, pBuffer) -end - -function vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkImagePipeSurfaceCreateInfoFUCHSIA}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkMemoryGetZirconHandleInfoFUCHSIA}, Ptr{Cint}), device, pGetZirconHandleInfo, pZirconHandle) -end - -function vkGetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryZirconHandlePropertiesFUCHSIA}), device, handleType, zirconHandle, pMemoryZirconHandleProperties) -end - -function vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreZirconHandleInfoFUCHSIA}), device, pImportSemaphoreZirconHandleInfo) -end - -function vkGetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetZirconHandleInfoFUCHSIA}, Ptr{Cint}), device, pGetZirconHandleInfo, pZirconHandle) -end - -function vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkIOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkViSurfaceCreateInfoNN}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fun_ptr) - ccall(fun_ptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end - -function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, fun_ptr) - ccall(fun_ptr, VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) -end - -function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) -end - -function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) -end - -function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) -end - -function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{Cint}), device, memory, handleType, pHandle) -end - -function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) -end - -function vkAcquireFullScreenExclusiveModeEXT(device, swapchain, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -function vkReleaseFullScreenExclusiveModeEXT(device, swapchain, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) -end - -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fun_ptr) - ccall(fun_ptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) -end - -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fun_ptr) - ccall(fun_ptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end - -function vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkDirectFBSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb, fun_ptr) - ccall(fun_ptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Cint}), physicalDevice, queueFamilyIndex, dfb) -end - -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end - -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end - -function vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkStreamDescriptorSurfaceCreateInfoGGP}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateScreenSurfaceQNX(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkScreenSurfaceCreateInfoQNX}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceScreenPresentationSupportQNX(physicalDevice, queueFamilyIndex, window, fun_ptr) - ccall(fun_ptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{_screen_window}), physicalDevice, queueFamilyIndex, window) -end - -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) -end - -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) -end - -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) -end - -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) -end - -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoGetMemoryPropertiesKHR}), device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements) -end - -function vkBindVideoSessionMemoryKHR(device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkVideoBindMemoryKHR}), device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories) -end - -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end - -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) -end - -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) -end - -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) -end - -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) -end - -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) -end - -function vkCmdDecodeVideoKHR(commandBuffer, pFrameInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pFrameInfo) -end - -function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) -end diff --git a/gen/vk_common.jl b/gen/vk_common.jl deleted file mode 100755 index affa0e9..0000000 --- a/gen/vk_common.jl +++ /dev/null @@ -1,11088 +0,0 @@ -# Automatically generated using Clang.jl wrap_c - - -const VULKAN_H_ = 1 -const VULKAN_CORE_H_ = 1 -const VK_VERSION_1_0 = 1 - -# Skipping MacroDefinition: VK_DEFINE_HANDLE ( object ) typedef struct object ## _T * object ; - -const VK_USE_64_BIT_PTR_DEFINES = 1 - -# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) -# Skipping MacroDefinition: VK_DEFINE_NON_DISPATCHABLE_HANDLE ( object ) typedef struct object ## _T * object ; -# Skipping MacroDefinition: VK_MAKE_VERSION ( major , minor , patch ) ( ( ( ( uint32_t ) ( major ) ) << 22 ) | ( ( ( uint32_t ) ( minor ) ) << 12 ) | ( ( uint32_t ) ( patch ) ) ) -# Skipping MacroDefinition: VK_MAKE_API_VERSION ( variant , major , minor , patch ) ( ( ( ( uint32_t ) ( variant ) ) << 29 ) | ( ( ( uint32_t ) ( major ) ) << 22 ) | ( ( ( uint32_t ) ( minor ) ) << 12 ) | ( ( uint32_t ) ( patch ) ) ) -# Skipping MacroDefinition: VK_API_VERSION_1_0 VK_MAKE_API_VERSION ( 0 , 1 , 0 , 0 ) - -const VK_HEADER_VERSION = 177 - -# Skipping MacroDefinition: VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION ( 0 , 1 , 2 , VK_HEADER_VERSION ) -# Skipping MacroDefinition: VK_VERSION_MAJOR ( version ) ( ( uint32_t ) ( version ) >> 22 ) -# Skipping MacroDefinition: VK_VERSION_MINOR ( version ) ( ( ( uint32_t ) ( version ) >> 12 ) & 0x3FFU ) -# Skipping MacroDefinition: VK_VERSION_PATCH ( version ) ( ( uint32_t ) ( version ) & 0xFFFU ) -# Skipping MacroDefinition: VK_API_VERSION_VARIANT ( version ) ( ( uint32_t ) ( version ) >> 29 ) -# Skipping MacroDefinition: VK_API_VERSION_MAJOR ( version ) ( ( ( uint32_t ) ( version ) >> 22 ) & 0x7FU ) -# Skipping MacroDefinition: VK_API_VERSION_MINOR ( version ) ( ( ( uint32_t ) ( version ) >> 12 ) & 0x3FFU ) -# Skipping MacroDefinition: VK_API_VERSION_PATCH ( version ) ( ( uint32_t ) ( version ) & 0xFFFU ) - -const VK_ATTACHMENT_UNUSED = ~(UInt32(0)) -const VK_FALSE = UInt32(0) -const VK_LOD_CLAMP_NONE = Float32(1000.0) -const VK_QUEUE_FAMILY_IGNORED = ~(UInt32(0)) -const VK_REMAINING_ARRAY_LAYERS = ~(UInt32(0)) -const VK_REMAINING_MIP_LEVELS = ~(UInt32(0)) -const VK_SUBPASS_EXTERNAL = ~(UInt32(0)) -const VK_TRUE = UInt32(1) -const VK_WHOLE_SIZE = ~(UInt64(0)) -const VK_MAX_MEMORY_TYPES = UInt32(32) -const VK_MAX_MEMORY_HEAPS = UInt32(16) -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = UInt32(256) -const VK_UUID_SIZE = UInt32(16) -const VK_MAX_EXTENSION_NAME_SIZE = UInt32(256) -const VK_MAX_DESCRIPTION_SIZE = UInt32(256) -const VK_VERSION_1_1 = 1 - -# Skipping MacroDefinition: VK_API_VERSION_1_1 VK_MAKE_API_VERSION ( 0 , 1 , 1 , 0 ) - -const VK_MAX_DEVICE_GROUP_SIZE = UInt32(32) -const VK_LUID_SIZE = UInt32(8) -const VK_QUEUE_FAMILY_EXTERNAL = ~(UInt32(1)) -const VK_VERSION_1_2 = 1 - -# Skipping MacroDefinition: VK_API_VERSION_1_2 VK_MAKE_API_VERSION ( 0 , 1 , 2 , 0 ) - -const VK_MAX_DRIVER_NAME_SIZE = UInt32(256) -const VK_MAX_DRIVER_INFO_SIZE = UInt32(256) -const VK_KHR_surface = 1 -const VK_KHR_SURFACE_SPEC_VERSION = 25 -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" -const VK_KHR_swapchain = 1 -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" -const VK_KHR_display = 1 -const VK_KHR_DISPLAY_SPEC_VERSION = 23 -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" -const VK_KHR_display_swapchain = 1 -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" -const VK_KHR_sampler_mirror_clamp_to_edge = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" -const VK_KHR_multiview = 1 -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -const VK_KHR_get_physical_device_properties2 = 1 -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -const VK_KHR_device_group = 1 -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -const VK_KHR_shader_draw_parameters = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -const VK_KHR_maintenance1 = 1 -const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" -const VK_KHR_device_group_creation = 1 -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -const VK_KHR_external_memory_capabilities = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE -const VK_KHR_external_memory = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -const VK_KHR_external_memory_fd = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -const VK_KHR_external_semaphore_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -const VK_KHR_external_semaphore = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -const VK_KHR_external_semaphore_fd = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -const VK_KHR_push_descriptor = 1 -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" -const VK_KHR_shader_float16_int8 = 1 -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -const VK_KHR_16bit_storage = 1 -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" -const VK_KHR_incremental_present = 1 -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" -const VK_KHR_descriptor_update_template = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -const VK_KHR_imageless_framebuffer = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -const VK_KHR_create_renderpass2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -const VK_KHR_shared_presentable_image = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -const VK_KHR_external_fence_capabilities = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VK_KHR_external_fence = 1 -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -const VK_KHR_external_fence_fd = 1 -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_KHR_performance_query = 1 -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_KHR_maintenance2 = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_KHR_get_surface_capabilities2 = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_KHR_variable_pointers = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_KHR_get_display_properties2 = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_KHR_dedicated_allocation = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_KHR_storage_buffer_storage_class = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_KHR_relaxed_block_layout = 1 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_image_format_list = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_bind_memory2 = 1 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_maintenance3 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_draw_indirect_count = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VK_KHR_shader_subgroup_extended_types = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const VK_KHR_8bit_storage = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const VK_KHR_shader_atomic_int64 = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const VK_KHR_shader_clock = 1 -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const VK_KHR_driver_properties = 1 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" -const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_timeline_semaphore = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_fragment_shading_rate = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_spirv_1_4 = 1 -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_buffer_device_address = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_pipeline_library = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_synchronization2 = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_copy_commands2 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_EXT_debug_report = 1 -const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 10 -const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" -const VK_NV_glsl_shader = 1 -const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 -const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" -const VK_EXT_depth_range_unrestricted = 1 -const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 -const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" -const VK_IMG_filter_cubic = 1 -const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 -const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" -const VK_AMD_rasterization_order = 1 -const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 -const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" -const VK_AMD_shader_trinary_minmax = 1 -const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 -const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" -const VK_AMD_shader_explicit_vertex_parameter = 1 -const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 -const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" -const VK_EXT_debug_marker = 1 -const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 -const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" -const VK_AMD_gcn_shader = 1 -const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 -const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" -const VK_NV_dedicated_allocation = 1 -const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 -const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" -const VK_EXT_transform_feedback = 1 -const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 -const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" -const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 -const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" -const VK_AMD_draw_indirect_count = 1 -const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 -const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" -const VK_AMD_negative_viewport_height = 1 -const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 -const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" -const VK_AMD_gpu_shader_half_float = 1 -const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 -const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" -const VK_AMD_shader_ballot = 1 -const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 -const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" -const VK_AMD_texture_gather_bias_lod = 1 -const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 -const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" -const VK_AMD_shader_info = 1 -const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 -const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" -const VK_AMD_shader_image_load_store_lod = 1 -const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 -const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" -const VK_NV_corner_sampled_image = 1 -const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 -const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" -const VK_IMG_format_pvrtc = 1 -const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 -const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" -const VK_NV_external_memory_capabilities = 1 -const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" -const VK_NV_external_memory = 1 -const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 -const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" -const VK_EXT_validation_flags = 1 -const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 -const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" -const VK_EXT_shader_subgroup_ballot = 1 -const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 -const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" -const VK_EXT_shader_subgroup_vote = 1 -const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 -const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" -const VK_EXT_texture_compression_astc_hdr = 1 -const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 -const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" -const VK_EXT_astc_decode_mode = 1 -const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 -const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" -const VK_EXT_conditional_rendering = 1 -const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 -const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" -const VK_NV_clip_space_w_scaling = 1 -const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 -const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" -const VK_EXT_direct_mode_display = 1 -const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 -const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" -const VK_EXT_display_surface_counter = 1 -const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 -const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" -const VK_EXT_display_control = 1 -const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 -const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" -const VK_GOOGLE_display_timing = 1 -const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 -const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" -const VK_NV_sample_mask_override_coverage = 1 -const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 -const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" -const VK_NV_geometry_shader_passthrough = 1 -const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 -const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" -const VK_NV_viewport_array2 = 1 -const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 -const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" -const VK_NVX_multiview_per_view_attributes = 1 -const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 -const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" -const VK_NV_viewport_swizzle = 1 -const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 -const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" -const VK_EXT_discard_rectangles = 1 -const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 -const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" -const VK_EXT_conservative_rasterization = 1 -const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 -const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" -const VK_EXT_depth_clip_enable = 1 -const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 -const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" -const VK_EXT_swapchain_colorspace = 1 -const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 -const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" -const VK_EXT_hdr_metadata = 1 -const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 -const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" -const VK_EXT_external_memory_dma_buf = 1 -const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 -const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" -const VK_EXT_queue_family_foreign = 1 -const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 -const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" -const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(UInt32(2)) -const VK_EXT_debug_utils = 1 -const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 -const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" -const VK_EXT_sampler_filter_minmax = 1 -const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 -const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" -const VK_AMD_gpu_shader_int16 = 1 -const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 -const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" -const VK_AMD_mixed_attachment_samples = 1 -const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 -const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" -const VK_AMD_shader_fragment_mask = 1 -const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 -const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" -const VK_EXT_inline_uniform_block = 1 -const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 -const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" -const VK_EXT_shader_stencil_export = 1 -const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 -const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" -const VK_EXT_sample_locations = 1 -const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 -const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" -const VK_EXT_blend_operation_advanced = 1 -const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 -const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" -const VK_NV_fragment_coverage_to_color = 1 -const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 -const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" -const VK_NV_framebuffer_mixed_samples = 1 -const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 -const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" -const VK_NV_fill_rectangle = 1 -const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 -const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" -const VK_NV_shader_sm_builtins = 1 -const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 -const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" -const VK_EXT_post_depth_coverage = 1 -const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 -const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" -const VK_EXT_image_drm_format_modifier = 1 -const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 -const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" -const VK_EXT_validation_cache = 1 -const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 -const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" -const VK_EXT_descriptor_indexing = 1 -const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 -const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" -const VK_EXT_shader_viewport_index_layer = 1 -const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 -const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" -const VK_NV_shading_rate_image = 1 -const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 -const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" -const VK_NV_ray_tracing = 1 -const VK_NV_RAY_TRACING_SPEC_VERSION = 3 -const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" -const VK_SHADER_UNUSED_KHR = ~(UInt32(0)) -const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR -const VK_NV_representative_fragment_test = 1 -const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 -const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" -const VK_EXT_filter_cubic = 1 -const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 -const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" -const VK_QCOM_render_pass_shader_resolve = 1 -const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 -const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" -const VK_EXT_global_priority = 1 -const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 -const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" -const VK_EXT_external_memory_host = 1 -const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 -const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" -const VK_AMD_buffer_marker = 1 -const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 -const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" -const VK_AMD_pipeline_compiler_control = 1 -const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 -const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" -const VK_EXT_calibrated_timestamps = 1 -const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 2 -const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" -const VK_AMD_shader_core_properties = 1 -const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 -const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" -const VK_AMD_memory_overallocation_behavior = 1 -const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 -const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" -const VK_EXT_vertex_attribute_divisor = 1 -const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 -const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" -const VK_EXT_pipeline_creation_feedback = 1 -const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 -const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" -const VK_NV_shader_subgroup_partitioned = 1 -const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 -const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" -const VK_NV_compute_shader_derivatives = 1 -const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" -const VK_NV_mesh_shader = 1 -const VK_NV_MESH_SHADER_SPEC_VERSION = 1 -const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" -const VK_NV_fragment_shader_barycentric = 1 -const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" -const VK_NV_shader_image_footprint = 1 -const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 -const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" -const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 -const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" -const VK_NV_device_diagnostic_checkpoints = 1 -const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 -const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" -const VK_INTEL_shader_integer_functions2 = 1 -const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 -const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" -const VK_INTEL_performance_query = 1 -const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 -const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" -const VK_EXT_pci_bus_info = 1 -const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 -const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" -const VK_AMD_display_native_hdr = 1 -const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 -const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" -const VK_EXT_fragment_density_map = 1 -const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 -const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" -const VK_EXT_scalar_block_layout = 1 -const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" -const VK_GOOGLE_hlsl_functionality1 = 1 -const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 -const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" -const VK_GOOGLE_decorate_string = 1 -const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 -const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" -const VK_EXT_subgroup_size_control = 1 -const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 -const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" -const VK_AMD_shader_core_properties2 = 1 -const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 -const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" -const VK_AMD_device_coherent_memory = 1 -const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 -const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" -const VK_EXT_shader_image_atomic_int64 = 1 -const VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION = 1 -const VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME = "VK_EXT_shader_image_atomic_int64" -const VK_EXT_memory_budget = 1 -const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 -const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" -const VK_EXT_memory_priority = 1 -const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 -const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" -const VK_NV_dedicated_allocation_image_aliasing = 1 -const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 -const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" -const VK_EXT_buffer_device_address = 1 -const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 -const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" -const VK_EXT_tooling_info = 1 -const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 -const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" -const VK_EXT_separate_stencil_usage = 1 -const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 -const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" -const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 -const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" -const VK_NV_cooperative_matrix = 1 -const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 -const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" -const VK_NV_coverage_reduction_mode = 1 -const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 -const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" -const VK_EXT_fragment_shader_interlock = 1 -const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 -const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" -const VK_EXT_ycbcr_image_arrays = 1 -const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 -const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" -const VK_EXT_provoking_vertex = 1 -const VK_EXT_PROVOKING_VERTEX_SPEC_VERSION = 1 -const VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME = "VK_EXT_provoking_vertex" -const VK_EXT_headless_surface = 1 -const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 -const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" -const VK_EXT_line_rasterization = 1 -const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" -const VK_EXT_shader_atomic_float = 1 -const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 -const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" -const VK_EXT_host_query_reset = 1 -const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 -const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" -const VK_EXT_index_type_uint8 = 1 -const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" -const VK_EXT_extended_dynamic_state = 1 -const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 -const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" -const VK_EXT_shader_demote_to_helper_invocation = 1 -const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 -const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" -const VK_NV_device_generated_commands = 1 -const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 -const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" -const VK_NV_inherited_viewport_scissor = 1 -const VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION = 1 -const VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME = "VK_NV_inherited_viewport_scissor" -const VK_EXT_texel_buffer_alignment = 1 -const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 -const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" -const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 2 -const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" -const VK_EXT_device_memory_report = 1 -const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 -const VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME = "VK_EXT_device_memory_report" -const VK_EXT_robustness2 = 1 -const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" -const VK_EXT_custom_border_color = 1 -const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 -const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" -const VK_GOOGLE_user_type = 1 -const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 -const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" -const VK_EXT_private_data = 1 -const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 -const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" -const VK_EXT_pipeline_creation_cache_control = 1 -const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 -const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" -const VK_NV_device_diagnostics_config = 1 -const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 -const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" -const VK_QCOM_render_pass_store_ops = 1 -const VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION = 2 -const VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" -const VK_NV_fragment_shading_rate_enums = 1 -const VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION = 1 -const VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME = "VK_NV_fragment_shading_rate_enums" -const VK_EXT_ycbcr_2plane_444_formats = 1 -const VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION = 1 -const VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME = "VK_EXT_ycbcr_2plane_444_formats" -const VK_EXT_fragment_density_map2 = 1 -const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 -const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" -const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" -const VK_EXT_image_robustness = 1 -const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 -const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" -const VK_EXT_4444_formats = 1 -const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 -const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" -const VK_NV_acquire_winrt_display = 1 -const VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION = 1 -const VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME = "VK_NV_acquire_winrt_display" -const VK_VALVE_mutable_descriptor_type = 1 -const VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 -const VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_VALVE_mutable_descriptor_type" -const VK_EXT_vertex_input_dynamic_state = 1 -const VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION = 2 -const VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_vertex_input_dynamic_state" -const VK_EXT_extended_dynamic_state2 = 1 -const VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION = 1 -const VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME = "VK_EXT_extended_dynamic_state2" -const VK_EXT_color_write_enable = 1 -const VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION = 1 -const VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME = "VK_EXT_color_write_enable" -const VK_KHR_acceleration_structure = 1 -const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 11 -const VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_KHR_acceleration_structure" -const VK_KHR_ray_tracing_pipeline = 1 -const VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME = "VK_KHR_ray_tracing_pipeline" -const VK_KHR_ray_query = 1 -const VK_KHR_RAY_QUERY_SPEC_VERSION = 1 -const VK_KHR_RAY_QUERY_EXTENSION_NAME = "VK_KHR_ray_query" -const VULKAN_ANDROID_H_ = 1 -const VK_KHR_android_surface = 1 -const VK_KHR_ANDROID_SURFACE_SPEC_VERSION = 6 -const VK_KHR_ANDROID_SURFACE_EXTENSION_NAME = "VK_KHR_android_surface" -const VK_ANDROID_external_memory_android_hardware_buffer = 1 -const VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION = 3 -const VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME = "VK_ANDROID_external_memory_android_hardware_buffer" -const VULKAN_FUCHSIA_H_ = 1 -const VK_FUCHSIA_imagepipe_surface = 1 -const VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION = 1 -const VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME = "VK_FUCHSIA_imagepipe_surface" -const VK_FUCHSIA_external_memory = 1 -const VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION = 1 -const VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_FUCHSIA_external_memory" -const VK_FUCHSIA_external_semaphore = 1 -const VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -const VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_FUCHSIA_external_semaphore" -const VULKAN_IOS_H_ = 1 -const VK_MVK_ios_surface = 1 -const VK_MVK_IOS_SURFACE_SPEC_VERSION = 3 -const VK_MVK_IOS_SURFACE_EXTENSION_NAME = "VK_MVK_ios_surface" -const VULKAN_MACOS_H_ = 1 -const VK_MVK_macos_surface = 1 -const VK_MVK_MACOS_SURFACE_SPEC_VERSION = 3 -const VK_MVK_MACOS_SURFACE_EXTENSION_NAME = "VK_MVK_macos_surface" -const VULKAN_METAL_H_ = 1 -const VK_EXT_metal_surface = 1 -const VK_EXT_METAL_SURFACE_SPEC_VERSION = 1 -const VK_EXT_METAL_SURFACE_EXTENSION_NAME = "VK_EXT_metal_surface" -const VULKAN_VI_H_ = 1 -const VK_NN_vi_surface = 1 -const VK_NN_VI_SURFACE_SPEC_VERSION = 1 -const VK_NN_VI_SURFACE_EXTENSION_NAME = "VK_NN_vi_surface" -const VULKAN_WAYLAND_H_ = 1 -const VK_KHR_wayland_surface = 1 -const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 -const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" -const VULKAN_WIN32_H_ = 1 -const VK_KHR_win32_surface = 1 -const VK_KHR_WIN32_SURFACE_SPEC_VERSION = 6 -const VK_KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface" -const VK_KHR_external_memory_win32 = 1 -const VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_KHR_external_memory_win32" -const VK_KHR_win32_keyed_mutex = 1 -const VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION = 1 -const VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_KHR_win32_keyed_mutex" -const VK_KHR_external_semaphore_win32 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME = "VK_KHR_external_semaphore_win32" -const VK_KHR_external_fence_win32 = 1 -const VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME = "VK_KHR_external_fence_win32" -const VK_NV_external_memory_win32 = 1 -const VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 -const VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_NV_external_memory_win32" -const VK_NV_win32_keyed_mutex = 1 -const VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION = 2 -const VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_NV_win32_keyed_mutex" -const VK_EXT_full_screen_exclusive = 1 -const VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION = 4 -const VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME = "VK_EXT_full_screen_exclusive" -const VULKAN_XCB_H_ = 1 -const VK_KHR_xcb_surface = 1 -const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 -const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" -const VULKAN_XLIB_H_ = 1 -const VK_KHR_xlib_surface = 1 -const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 -const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" -const VULKAN_DIRECTFB_H_ = 1 -const VK_EXT_directfb_surface = 1 -const VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION = 1 -const VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME = "VK_EXT_directfb_surface" -const VULKAN_XLIB_XRANDR_H_ = 1 -const VK_EXT_acquire_xlib_display = 1 -const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 -const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" -const VULKAN_GGP_H_ = 1 -const VK_GGP_stream_descriptor_surface = 1 -const VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION = 1 -const VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME = "VK_GGP_stream_descriptor_surface" -const VK_GGP_frame_token = 1 -const VK_GGP_FRAME_TOKEN_SPEC_VERSION = 1 -const VK_GGP_FRAME_TOKEN_EXTENSION_NAME = "VK_GGP_frame_token" -const VULKAN_SCREEN_H_ = 1 -const VK_QNX_screen_surface = 1 -const VK_QNX_SCREEN_SURFACE_SPEC_VERSION = 1 -const VK_QNX_SCREEN_SURFACE_EXTENSION_NAME = "VK_QNX_screen_surface" -const VULKAN_BETA_H_ = 1 -const VK_KHR_video_queue = 1 -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 1 -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" -const VK_KHR_video_decode_queue = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" -const VK_KHR_portability_subset = 1 -const VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME = "VK_KHR_portability_subset" -const VK_KHR_video_encode_queue = 1 -const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 2 -const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_EXT_video_encode_h264 = 1 -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 -const VULKAN_VIDEO_CODEC_COMMON_H_ = 1 - -# Skipping MacroDefinition: VK_MAKE_VIDEO_STD_VERSION ( major , minor , patch ) ( ( ( ( uint32_t ) ( major ) ) << 22 ) | ( ( ( uint32_t ) ( minor ) ) << 12 ) | ( ( uint32_t ) ( patch ) ) ) -# Skipping MacroDefinition: VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9 VK_MAKE_VIDEO_STD_VERSION ( 0 , 9 , 0 ) - -const VK_STD_VULKAN_VIDEO_CODEC_H264_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9 -const VK_STD_VULKAN_VIDEO_CODEC_H264_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264" -const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -const VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION = 1 -const VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_EXT_video_encode_h264" -const VK_EXT_video_decode_h264 = 1 -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 -const VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION = 1 -const VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_EXT_video_decode_h264" -const VK_EXT_video_decode_h265 = 1 -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 - -# Skipping MacroDefinition: VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_5 VK_MAKE_VIDEO_STD_VERSION ( 0 , 5 , 0 ) - -const VK_STD_VULKAN_VIDEO_CODEC_H265_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_5 -const VK_STD_VULKAN_VIDEO_CODEC_H265_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265" -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION = 1 -const VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_EXT_video_decode_h265" -const VkBool32 = UInt32 -const VkDeviceAddress = UInt64 -const VkDeviceSize = UInt64 -const VkFlags = UInt32 -const VkSampleMask = UInt32 -const VkBuffer_T = Cvoid -const VkBuffer = Ptr{VkBuffer_T} -const VkImage_T = Cvoid -const VkImage = Ptr{VkImage_T} -const VkInstance_T = Cvoid -const VkInstance = Ptr{VkInstance_T} -const VkPhysicalDevice_T = Cvoid -const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} -const VkDevice_T = Cvoid -const VkDevice = Ptr{VkDevice_T} -const VkQueue_T = Cvoid -const VkQueue = Ptr{VkQueue_T} -const VkSemaphore_T = Cvoid -const VkSemaphore = Ptr{VkSemaphore_T} -const VkCommandBuffer_T = Cvoid -const VkCommandBuffer = Ptr{VkCommandBuffer_T} -const VkFence_T = Cvoid -const VkFence = Ptr{VkFence_T} -const VkDeviceMemory_T = Cvoid -const VkDeviceMemory = Ptr{VkDeviceMemory_T} -const VkEvent_T = Cvoid -const VkEvent = Ptr{VkEvent_T} -const VkQueryPool_T = Cvoid -const VkQueryPool = Ptr{VkQueryPool_T} -const VkBufferView_T = Cvoid -const VkBufferView = Ptr{VkBufferView_T} -const VkImageView_T = Cvoid -const VkImageView = Ptr{VkImageView_T} -const VkShaderModule_T = Cvoid -const VkShaderModule = Ptr{VkShaderModule_T} -const VkPipelineCache_T = Cvoid -const VkPipelineCache = Ptr{VkPipelineCache_T} -const VkPipelineLayout_T = Cvoid -const VkPipelineLayout = Ptr{VkPipelineLayout_T} -const VkPipeline_T = Cvoid -const VkPipeline = Ptr{VkPipeline_T} -const VkRenderPass_T = Cvoid -const VkRenderPass = Ptr{VkRenderPass_T} -const VkDescriptorSetLayout_T = Cvoid -const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} -const VkSampler_T = Cvoid -const VkSampler = Ptr{VkSampler_T} -const VkDescriptorSet_T = Cvoid -const VkDescriptorSet = Ptr{VkDescriptorSet_T} -const VkDescriptorPool_T = Cvoid -const VkDescriptorPool = Ptr{VkDescriptorPool_T} -const VkFramebuffer_T = Cvoid -const VkFramebuffer = Ptr{VkFramebuffer_T} -const VkCommandPool_T = Cvoid -const VkCommandPool = Ptr{VkCommandPool_T} - -@cenum(VkResult{Int32}, - VK_SUCCESS = 0, - VK_NOT_READY = 1, - VK_TIMEOUT = 2, - VK_EVENT_SET = 3, - VK_EVENT_RESET = 4, - VK_INCOMPLETE = 5, - VK_ERROR_OUT_OF_HOST_MEMORY = -1, - VK_ERROR_OUT_OF_DEVICE_MEMORY = -2, - VK_ERROR_INITIALIZATION_FAILED = -3, - VK_ERROR_DEVICE_LOST = -4, - VK_ERROR_MEMORY_MAP_FAILED = -5, - VK_ERROR_LAYER_NOT_PRESENT = -6, - VK_ERROR_EXTENSION_NOT_PRESENT = -7, - VK_ERROR_FEATURE_NOT_PRESENT = -8, - VK_ERROR_INCOMPATIBLE_DRIVER = -9, - VK_ERROR_TOO_MANY_OBJECTS = -10, - VK_ERROR_FORMAT_NOT_SUPPORTED = -11, - VK_ERROR_FRAGMENTED_POOL = -12, - VK_ERROR_UNKNOWN = -13, - VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000, - VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003, - VK_ERROR_FRAGMENTATION = -1000161000, - VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000, - VK_ERROR_SURFACE_LOST_KHR = -1000000000, - VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, - VK_SUBOPTIMAL_KHR = 1000001003, - VK_ERROR_OUT_OF_DATE_KHR = -1000001004, - VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001, - VK_ERROR_VALIDATION_FAILED_EXT = -1000011001, - VK_ERROR_INVALID_SHADER_NV = -1000012000, - VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000, - VK_ERROR_NOT_PERMITTED_EXT = -1000174001, - VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000, - VK_THREAD_IDLE_KHR = 1000268000, - VK_THREAD_DONE_KHR = 1000268001, - VK_OPERATION_DEFERRED_KHR = 1000268002, - VK_OPERATION_NOT_DEFERRED_KHR = 1000268003, - VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000, - VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000, - VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003, - VK_ERROR_FRAGMENTATION_EXT = -1000161000, - VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000, - VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000, - VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000, - VK_RESULT_MAX_ENUM = 2147483647, -) -@cenum(VkStructureType, - VK_STRUCTURE_TYPE_APPLICATION_INFO = 0, - VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1, - VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2, - VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3, - VK_STRUCTURE_TYPE_SUBMIT_INFO = 4, - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5, - VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6, - VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7, - VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8, - VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9, - VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10, - VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11, - VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12, - VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13, - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14, - VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15, - VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16, - VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17, - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18, - VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19, - VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20, - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23, - VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24, - VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25, - VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26, - VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27, - VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28, - VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29, - VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30, - VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32, - VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35, - VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36, - VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38, - VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42, - VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45, - VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46, - VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47, - VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000, - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000, - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000, - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001, - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000, - VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003, - VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004, - VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005, - VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006, - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000, - VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001, - VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002, - VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003, - VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001, - VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006, - VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000, - VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001, - VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002, - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003, - VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000, - VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002, - VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001, - VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002, - VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005, - VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000, - VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002, - VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000, - VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001, - VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000, - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000, - VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002, - VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004, - VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005, - VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000, - VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000, - VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002, - VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001, - VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002, - VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003, - VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004, - VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001, - VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002, - VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004, - VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000, - VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001, - VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007, - VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009, - VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010, - VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011, - VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012, - VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000, - VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001, - VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000, - VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000, - VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000, - VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000, - VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000, - VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, - VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000, - VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000, - VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001, - VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002, - VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR = 1000023000, - VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR = 1000023001, - VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR = 1000023002, - VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR = 1000023003, - VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR = 1000023004, - VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR = 1000023005, - VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000023006, - VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR = 1000023007, - VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR = 1000023008, - VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR = 1000023009, - VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR = 1000023010, - VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR = 1000023011, - VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000023012, - VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR = 1000023013, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014, - VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR = 1000023015, - VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR = 1000024000, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001, - VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000, - VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001, - VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002, - VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000, - VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT = 1000038000, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT = 1000038001, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000038002, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000038003, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT = 1000038004, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT = 1000038005, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT = 1000038006, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT = 1000038007, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT = 1000038008, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT = 1000040000, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT = 1000040001, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT = 1000040002, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT = 1000040003, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT = 1000040004, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000040005, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000040006, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT = 1000040007, - VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000, - VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001, - VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000, - VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000, - VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000, - VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001, - VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002, - VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000, - VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001, - VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002, - VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000, - VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000, - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001, - VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002, - VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003, - VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000, - VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001, - VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002, - VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000, - VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000, - VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001, - VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002, - VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003, - VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000, - VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001, - VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000, - VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000, - VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000, - VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001, - VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002, - VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000, - VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001, - VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002, - VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003, - VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004, - VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005, - VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001, - VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002, - VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000, - VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001, - VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002, - VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003, - VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004, - VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000, - VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000, - VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000, - VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001, - VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002, - VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003, - VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004, - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000, - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001, - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002, - VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003, - VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004, - VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002, - VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003, - VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000, - VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001, - VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003, - VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001, - VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002, - VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000150007, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR = 1000150009, - VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010, - VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011, - VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = 1000150013, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = 1000150014, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = 1000150020, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001, - VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015, - VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016, - VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013, - VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001, - VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002, - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003, - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004, - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005, - VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000, - VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005, - VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001, - VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003, - VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004, - VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005, - VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009, - VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000, - VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000, - VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001, - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000, - VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000, - VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000, - VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT = 1000187000, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT = 1000187001, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000187002, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000187003, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT = 1000187004, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT = 1000187005, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT = 1000187006, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000, - VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002, - VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000, - VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002, - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000, - VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000, - VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001, - VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002, - VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003, - VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004, - VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000, - VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000, - VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001, - VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = 1000215000, - VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001, - VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000, - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002, - VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000, - VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000, - VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001, - VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000, - VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000, - VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000, - VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001, - VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = 1000254000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = 1000254001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = 1000254002, - VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002, - VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001, - VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000, - VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000, - VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001, - VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002, - VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003, - VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004, - VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005, - VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = 1000278000, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = 1000278001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000, - VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000, - VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = 1000284002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001, - VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002, - VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000, - VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001, - VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000, - VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001, - VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = 1000314000, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = 1000314001, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = 1000314002, - VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = 1000314003, - VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = 1000314004, - VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = 1000314005, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = 1000314006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = 1000314007, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008, - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = 1000325000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = 1000326000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = 1000326001, - VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = 1000326002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001, - VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000, - VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = 1000337000, - VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = 1000337001, - VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = 1000337002, - VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = 1000337003, - VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = 1000337004, - VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = 1000337005, - VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = 1000337006, - VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = 1000337007, - VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = 1000337008, - VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = 1000337009, - VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = 1000337010, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000, - VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000, - VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000, - VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001, - VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364000, - VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA = 1000364001, - VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364002, - VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365000, - VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000, - VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000, - VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000, - VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000, - VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001, - VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006, - VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008, - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000, - VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003, - VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004, - VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005, - VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006, - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000, - VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000, - VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002, - VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000, - VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001, - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000, - VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002, - VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002, - VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004, - VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005, - VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000, - VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001, - VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000, - VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001, - VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002, - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000, - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000, - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000, - VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001, - VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002, - VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003, - VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001, - VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002, - VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005, - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001, - VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002, - VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003, - VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004, - VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005, - VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001, - VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001, - VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002, - VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000, - VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkImageLayout, - VK_IMAGE_LAYOUT_UNDEFINED = 0, - VK_IMAGE_LAYOUT_GENERAL = 1, - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4, - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5, - VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7, - VK_IMAGE_LAYOUT_PREINITIALIZED = 8, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001, - VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002, - VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003, - VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002, - VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000, - VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001, - VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR = 1000024002, - VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR = 1000299000, - VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR = 1000299001, - VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR = 1000299002, - VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000, - VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003, - VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000, - VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR = 1000314000, - VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = 1000314001, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001, - VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001, - VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002, - VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003, - VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647, -) -@cenum(VkObjectType, - VK_OBJECT_TYPE_UNKNOWN = 0, - VK_OBJECT_TYPE_INSTANCE = 1, - VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2, - VK_OBJECT_TYPE_DEVICE = 3, - VK_OBJECT_TYPE_QUEUE = 4, - VK_OBJECT_TYPE_SEMAPHORE = 5, - VK_OBJECT_TYPE_COMMAND_BUFFER = 6, - VK_OBJECT_TYPE_FENCE = 7, - VK_OBJECT_TYPE_DEVICE_MEMORY = 8, - VK_OBJECT_TYPE_BUFFER = 9, - VK_OBJECT_TYPE_IMAGE = 10, - VK_OBJECT_TYPE_EVENT = 11, - VK_OBJECT_TYPE_QUERY_POOL = 12, - VK_OBJECT_TYPE_BUFFER_VIEW = 13, - VK_OBJECT_TYPE_IMAGE_VIEW = 14, - VK_OBJECT_TYPE_SHADER_MODULE = 15, - VK_OBJECT_TYPE_PIPELINE_CACHE = 16, - VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17, - VK_OBJECT_TYPE_RENDER_PASS = 18, - VK_OBJECT_TYPE_PIPELINE = 19, - VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20, - VK_OBJECT_TYPE_SAMPLER = 21, - VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22, - VK_OBJECT_TYPE_DESCRIPTOR_SET = 23, - VK_OBJECT_TYPE_FRAMEBUFFER = 24, - VK_OBJECT_TYPE_COMMAND_POOL = 25, - VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000, - VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, - VK_OBJECT_TYPE_SURFACE_KHR = 1000000000, - VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000, - VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000, - VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001, - VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000, - VK_OBJECT_TYPE_VIDEO_SESSION_KHR = 1000023000, - VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR = 1000023001, - VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000, - VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, - VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000, - VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, - VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000, - VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000, - VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000, - VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000, - VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000, - VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000, - VK_OBJECT_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkVendorId, - VK_VENDOR_ID_VIV = 65537, - VK_VENDOR_ID_VSI = 65538, - VK_VENDOR_ID_KAZAN = 65539, - VK_VENDOR_ID_CODEPLAY = 65540, - VK_VENDOR_ID_MESA = 65541, - VK_VENDOR_ID_POCL = 65542, - VK_VENDOR_ID_MAX_ENUM = 2147483647, -) -@cenum(VkPipelineCacheHeaderVersion, - VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1, - VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647, -) -@cenum(VkSystemAllocationScope, - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0, - VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1, - VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2, - VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3, - VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4, - VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647, -) -@cenum(VkInternalAllocationType, - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0, - VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkFormat, - VK_FORMAT_UNDEFINED = 0, - VK_FORMAT_R4G4_UNORM_PACK8 = 1, - VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2, - VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3, - VK_FORMAT_R5G6B5_UNORM_PACK16 = 4, - VK_FORMAT_B5G6R5_UNORM_PACK16 = 5, - VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6, - VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7, - VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8, - VK_FORMAT_R8_UNORM = 9, - VK_FORMAT_R8_SNORM = 10, - VK_FORMAT_R8_USCALED = 11, - VK_FORMAT_R8_SSCALED = 12, - VK_FORMAT_R8_UINT = 13, - VK_FORMAT_R8_SINT = 14, - VK_FORMAT_R8_SRGB = 15, - VK_FORMAT_R8G8_UNORM = 16, - VK_FORMAT_R8G8_SNORM = 17, - VK_FORMAT_R8G8_USCALED = 18, - VK_FORMAT_R8G8_SSCALED = 19, - VK_FORMAT_R8G8_UINT = 20, - VK_FORMAT_R8G8_SINT = 21, - VK_FORMAT_R8G8_SRGB = 22, - VK_FORMAT_R8G8B8_UNORM = 23, - VK_FORMAT_R8G8B8_SNORM = 24, - VK_FORMAT_R8G8B8_USCALED = 25, - VK_FORMAT_R8G8B8_SSCALED = 26, - VK_FORMAT_R8G8B8_UINT = 27, - VK_FORMAT_R8G8B8_SINT = 28, - VK_FORMAT_R8G8B8_SRGB = 29, - VK_FORMAT_B8G8R8_UNORM = 30, - VK_FORMAT_B8G8R8_SNORM = 31, - VK_FORMAT_B8G8R8_USCALED = 32, - VK_FORMAT_B8G8R8_SSCALED = 33, - VK_FORMAT_B8G8R8_UINT = 34, - VK_FORMAT_B8G8R8_SINT = 35, - VK_FORMAT_B8G8R8_SRGB = 36, - VK_FORMAT_R8G8B8A8_UNORM = 37, - VK_FORMAT_R8G8B8A8_SNORM = 38, - VK_FORMAT_R8G8B8A8_USCALED = 39, - VK_FORMAT_R8G8B8A8_SSCALED = 40, - VK_FORMAT_R8G8B8A8_UINT = 41, - VK_FORMAT_R8G8B8A8_SINT = 42, - VK_FORMAT_R8G8B8A8_SRGB = 43, - VK_FORMAT_B8G8R8A8_UNORM = 44, - VK_FORMAT_B8G8R8A8_SNORM = 45, - VK_FORMAT_B8G8R8A8_USCALED = 46, - VK_FORMAT_B8G8R8A8_SSCALED = 47, - VK_FORMAT_B8G8R8A8_UINT = 48, - VK_FORMAT_B8G8R8A8_SINT = 49, - VK_FORMAT_B8G8R8A8_SRGB = 50, - VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51, - VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52, - VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53, - VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54, - VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55, - VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56, - VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57, - VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58, - VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59, - VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60, - VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61, - VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62, - VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63, - VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64, - VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65, - VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66, - VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67, - VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68, - VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69, - VK_FORMAT_R16_UNORM = 70, - VK_FORMAT_R16_SNORM = 71, - VK_FORMAT_R16_USCALED = 72, - VK_FORMAT_R16_SSCALED = 73, - VK_FORMAT_R16_UINT = 74, - VK_FORMAT_R16_SINT = 75, - VK_FORMAT_R16_SFLOAT = 76, - VK_FORMAT_R16G16_UNORM = 77, - VK_FORMAT_R16G16_SNORM = 78, - VK_FORMAT_R16G16_USCALED = 79, - VK_FORMAT_R16G16_SSCALED = 80, - VK_FORMAT_R16G16_UINT = 81, - VK_FORMAT_R16G16_SINT = 82, - VK_FORMAT_R16G16_SFLOAT = 83, - VK_FORMAT_R16G16B16_UNORM = 84, - VK_FORMAT_R16G16B16_SNORM = 85, - VK_FORMAT_R16G16B16_USCALED = 86, - VK_FORMAT_R16G16B16_SSCALED = 87, - VK_FORMAT_R16G16B16_UINT = 88, - VK_FORMAT_R16G16B16_SINT = 89, - VK_FORMAT_R16G16B16_SFLOAT = 90, - VK_FORMAT_R16G16B16A16_UNORM = 91, - VK_FORMAT_R16G16B16A16_SNORM = 92, - VK_FORMAT_R16G16B16A16_USCALED = 93, - VK_FORMAT_R16G16B16A16_SSCALED = 94, - VK_FORMAT_R16G16B16A16_UINT = 95, - VK_FORMAT_R16G16B16A16_SINT = 96, - VK_FORMAT_R16G16B16A16_SFLOAT = 97, - VK_FORMAT_R32_UINT = 98, - VK_FORMAT_R32_SINT = 99, - VK_FORMAT_R32_SFLOAT = 100, - VK_FORMAT_R32G32_UINT = 101, - VK_FORMAT_R32G32_SINT = 102, - VK_FORMAT_R32G32_SFLOAT = 103, - VK_FORMAT_R32G32B32_UINT = 104, - VK_FORMAT_R32G32B32_SINT = 105, - VK_FORMAT_R32G32B32_SFLOAT = 106, - VK_FORMAT_R32G32B32A32_UINT = 107, - VK_FORMAT_R32G32B32A32_SINT = 108, - VK_FORMAT_R32G32B32A32_SFLOAT = 109, - VK_FORMAT_R64_UINT = 110, - VK_FORMAT_R64_SINT = 111, - VK_FORMAT_R64_SFLOAT = 112, - VK_FORMAT_R64G64_UINT = 113, - VK_FORMAT_R64G64_SINT = 114, - VK_FORMAT_R64G64_SFLOAT = 115, - VK_FORMAT_R64G64B64_UINT = 116, - VK_FORMAT_R64G64B64_SINT = 117, - VK_FORMAT_R64G64B64_SFLOAT = 118, - VK_FORMAT_R64G64B64A64_UINT = 119, - VK_FORMAT_R64G64B64A64_SINT = 120, - VK_FORMAT_R64G64B64A64_SFLOAT = 121, - VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122, - VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123, - VK_FORMAT_D16_UNORM = 124, - VK_FORMAT_X8_D24_UNORM_PACK32 = 125, - VK_FORMAT_D32_SFLOAT = 126, - VK_FORMAT_S8_UINT = 127, - VK_FORMAT_D16_UNORM_S8_UINT = 128, - VK_FORMAT_D24_UNORM_S8_UINT = 129, - VK_FORMAT_D32_SFLOAT_S8_UINT = 130, - VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131, - VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132, - VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133, - VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134, - VK_FORMAT_BC2_UNORM_BLOCK = 135, - VK_FORMAT_BC2_SRGB_BLOCK = 136, - VK_FORMAT_BC3_UNORM_BLOCK = 137, - VK_FORMAT_BC3_SRGB_BLOCK = 138, - VK_FORMAT_BC4_UNORM_BLOCK = 139, - VK_FORMAT_BC4_SNORM_BLOCK = 140, - VK_FORMAT_BC5_UNORM_BLOCK = 141, - VK_FORMAT_BC5_SNORM_BLOCK = 142, - VK_FORMAT_BC6H_UFLOAT_BLOCK = 143, - VK_FORMAT_BC6H_SFLOAT_BLOCK = 144, - VK_FORMAT_BC7_UNORM_BLOCK = 145, - VK_FORMAT_BC7_SRGB_BLOCK = 146, - VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147, - VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148, - VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149, - VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150, - VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151, - VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152, - VK_FORMAT_EAC_R11_UNORM_BLOCK = 153, - VK_FORMAT_EAC_R11_SNORM_BLOCK = 154, - VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155, - VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156, - VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157, - VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158, - VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159, - VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160, - VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161, - VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162, - VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163, - VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164, - VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165, - VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166, - VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167, - VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168, - VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169, - VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170, - VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171, - VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172, - VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173, - VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174, - VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175, - VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176, - VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177, - VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178, - VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179, - VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180, - VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181, - VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182, - VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183, - VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184, - VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000, - VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001, - VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002, - VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003, - VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004, - VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005, - VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006, - VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007, - VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008, - VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009, - VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010, - VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012, - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014, - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016, - VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017, - VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018, - VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019, - VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020, - VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022, - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024, - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026, - VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027, - VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028, - VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029, - VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030, - VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031, - VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032, - VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033, - VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000, - VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001, - VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002, - VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003, - VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004, - VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005, - VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006, - VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007, - VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000, - VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001, - VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002, - VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003, - VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004, - VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005, - VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006, - VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007, - VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008, - VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009, - VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010, - VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011, - VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012, - VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013, - VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = 1000330000, - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = 1000330001, - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = 1000330002, - VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = 1000330003, - VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000, - VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001, - VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000, - VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001, - VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002, - VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003, - VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004, - VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005, - VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006, - VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007, - VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008, - VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009, - VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010, - VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012, - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014, - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015, - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016, - VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017, - VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018, - VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019, - VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020, - VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022, - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024, - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025, - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026, - VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027, - VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028, - VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029, - VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030, - VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031, - VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032, - VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033, - VK_FORMAT_MAX_ENUM = 2147483647, -) -@cenum(VkImageTiling, - VK_IMAGE_TILING_OPTIMAL = 0, - VK_IMAGE_TILING_LINEAR = 1, - VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000, - VK_IMAGE_TILING_MAX_ENUM = 2147483647, -) -@cenum(VkImageType, - VK_IMAGE_TYPE_1D = 0, - VK_IMAGE_TYPE_2D = 1, - VK_IMAGE_TYPE_3D = 2, - VK_IMAGE_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkPhysicalDeviceType, - VK_PHYSICAL_DEVICE_TYPE_OTHER = 0, - VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1, - VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2, - VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3, - VK_PHYSICAL_DEVICE_TYPE_CPU = 4, - VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkQueryType, - VK_QUERY_TYPE_OCCLUSION = 0, - VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, - VK_QUERY_TYPE_TIMESTAMP = 2, - VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000, - VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000, - VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004, - VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000, - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000, - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001, - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000, - VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000, - VK_QUERY_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkSharingMode, - VK_SHARING_MODE_EXCLUSIVE = 0, - VK_SHARING_MODE_CONCURRENT = 1, - VK_SHARING_MODE_MAX_ENUM = 2147483647, -) -@cenum(VkComponentSwizzle, - VK_COMPONENT_SWIZZLE_IDENTITY = 0, - VK_COMPONENT_SWIZZLE_ZERO = 1, - VK_COMPONENT_SWIZZLE_ONE = 2, - VK_COMPONENT_SWIZZLE_R = 3, - VK_COMPONENT_SWIZZLE_G = 4, - VK_COMPONENT_SWIZZLE_B = 5, - VK_COMPONENT_SWIZZLE_A = 6, - VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647, -) -@cenum(VkImageViewType, - VK_IMAGE_VIEW_TYPE_1D = 0, - VK_IMAGE_VIEW_TYPE_2D = 1, - VK_IMAGE_VIEW_TYPE_3D = 2, - VK_IMAGE_VIEW_TYPE_CUBE = 3, - VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4, - VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5, - VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6, - VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkBlendFactor, - VK_BLEND_FACTOR_ZERO = 0, - VK_BLEND_FACTOR_ONE = 1, - VK_BLEND_FACTOR_SRC_COLOR = 2, - VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3, - VK_BLEND_FACTOR_DST_COLOR = 4, - VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5, - VK_BLEND_FACTOR_SRC_ALPHA = 6, - VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7, - VK_BLEND_FACTOR_DST_ALPHA = 8, - VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9, - VK_BLEND_FACTOR_CONSTANT_COLOR = 10, - VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11, - VK_BLEND_FACTOR_CONSTANT_ALPHA = 12, - VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13, - VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14, - VK_BLEND_FACTOR_SRC1_COLOR = 15, - VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16, - VK_BLEND_FACTOR_SRC1_ALPHA = 17, - VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18, - VK_BLEND_FACTOR_MAX_ENUM = 2147483647, -) -@cenum(VkBlendOp, - VK_BLEND_OP_ADD = 0, - VK_BLEND_OP_SUBTRACT = 1, - VK_BLEND_OP_REVERSE_SUBTRACT = 2, - VK_BLEND_OP_MIN = 3, - VK_BLEND_OP_MAX = 4, - VK_BLEND_OP_ZERO_EXT = 1000148000, - VK_BLEND_OP_SRC_EXT = 1000148001, - VK_BLEND_OP_DST_EXT = 1000148002, - VK_BLEND_OP_SRC_OVER_EXT = 1000148003, - VK_BLEND_OP_DST_OVER_EXT = 1000148004, - VK_BLEND_OP_SRC_IN_EXT = 1000148005, - VK_BLEND_OP_DST_IN_EXT = 1000148006, - VK_BLEND_OP_SRC_OUT_EXT = 1000148007, - VK_BLEND_OP_DST_OUT_EXT = 1000148008, - VK_BLEND_OP_SRC_ATOP_EXT = 1000148009, - VK_BLEND_OP_DST_ATOP_EXT = 1000148010, - VK_BLEND_OP_XOR_EXT = 1000148011, - VK_BLEND_OP_MULTIPLY_EXT = 1000148012, - VK_BLEND_OP_SCREEN_EXT = 1000148013, - VK_BLEND_OP_OVERLAY_EXT = 1000148014, - VK_BLEND_OP_DARKEN_EXT = 1000148015, - VK_BLEND_OP_LIGHTEN_EXT = 1000148016, - VK_BLEND_OP_COLORDODGE_EXT = 1000148017, - VK_BLEND_OP_COLORBURN_EXT = 1000148018, - VK_BLEND_OP_HARDLIGHT_EXT = 1000148019, - VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020, - VK_BLEND_OP_DIFFERENCE_EXT = 1000148021, - VK_BLEND_OP_EXCLUSION_EXT = 1000148022, - VK_BLEND_OP_INVERT_EXT = 1000148023, - VK_BLEND_OP_INVERT_RGB_EXT = 1000148024, - VK_BLEND_OP_LINEARDODGE_EXT = 1000148025, - VK_BLEND_OP_LINEARBURN_EXT = 1000148026, - VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027, - VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028, - VK_BLEND_OP_PINLIGHT_EXT = 1000148029, - VK_BLEND_OP_HARDMIX_EXT = 1000148030, - VK_BLEND_OP_HSL_HUE_EXT = 1000148031, - VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032, - VK_BLEND_OP_HSL_COLOR_EXT = 1000148033, - VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034, - VK_BLEND_OP_PLUS_EXT = 1000148035, - VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036, - VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037, - VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038, - VK_BLEND_OP_MINUS_EXT = 1000148039, - VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040, - VK_BLEND_OP_CONTRAST_EXT = 1000148041, - VK_BLEND_OP_INVERT_OVG_EXT = 1000148042, - VK_BLEND_OP_RED_EXT = 1000148043, - VK_BLEND_OP_GREEN_EXT = 1000148044, - VK_BLEND_OP_BLUE_EXT = 1000148045, - VK_BLEND_OP_MAX_ENUM = 2147483647, -) -@cenum(VkCompareOp, - VK_COMPARE_OP_NEVER = 0, - VK_COMPARE_OP_LESS = 1, - VK_COMPARE_OP_EQUAL = 2, - VK_COMPARE_OP_LESS_OR_EQUAL = 3, - VK_COMPARE_OP_GREATER = 4, - VK_COMPARE_OP_NOT_EQUAL = 5, - VK_COMPARE_OP_GREATER_OR_EQUAL = 6, - VK_COMPARE_OP_ALWAYS = 7, - VK_COMPARE_OP_MAX_ENUM = 2147483647, -) -@cenum(VkDynamicState, - VK_DYNAMIC_STATE_VIEWPORT = 0, - VK_DYNAMIC_STATE_SCISSOR = 1, - VK_DYNAMIC_STATE_LINE_WIDTH = 2, - VK_DYNAMIC_STATE_DEPTH_BIAS = 3, - VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4, - VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5, - VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6, - VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7, - VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8, - VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000, - VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000, - VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000, - VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000, - VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004, - VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006, - VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001, - VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000, - VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000, - VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000, - VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001, - VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002, - VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003, - VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004, - VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005, - VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006, - VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007, - VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008, - VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009, - VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010, - VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011, - VK_DYNAMIC_STATE_VERTEX_INPUT_EXT = 1000352000, - VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000, - VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001, - VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002, - VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003, - VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004, - VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000, - VK_DYNAMIC_STATE_MAX_ENUM = 2147483647, -) -@cenum(VkFrontFace, - VK_FRONT_FACE_COUNTER_CLOCKWISE = 0, - VK_FRONT_FACE_CLOCKWISE = 1, - VK_FRONT_FACE_MAX_ENUM = 2147483647, -) -@cenum(VkVertexInputRate, - VK_VERTEX_INPUT_RATE_VERTEX = 0, - VK_VERTEX_INPUT_RATE_INSTANCE = 1, - VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647, -) -@cenum(VkPrimitiveTopology, - VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9, - VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10, - VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647, -) -@cenum(VkPolygonMode, - VK_POLYGON_MODE_FILL = 0, - VK_POLYGON_MODE_LINE = 1, - VK_POLYGON_MODE_POINT = 2, - VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000, - VK_POLYGON_MODE_MAX_ENUM = 2147483647, -) -@cenum(VkStencilOp, - VK_STENCIL_OP_KEEP = 0, - VK_STENCIL_OP_ZERO = 1, - VK_STENCIL_OP_REPLACE = 2, - VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3, - VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4, - VK_STENCIL_OP_INVERT = 5, - VK_STENCIL_OP_INCREMENT_AND_WRAP = 6, - VK_STENCIL_OP_DECREMENT_AND_WRAP = 7, - VK_STENCIL_OP_MAX_ENUM = 2147483647, -) -@cenum(VkLogicOp, - VK_LOGIC_OP_CLEAR = 0, - VK_LOGIC_OP_AND = 1, - VK_LOGIC_OP_AND_REVERSE = 2, - VK_LOGIC_OP_COPY = 3, - VK_LOGIC_OP_AND_INVERTED = 4, - VK_LOGIC_OP_NO_OP = 5, - VK_LOGIC_OP_XOR = 6, - VK_LOGIC_OP_OR = 7, - VK_LOGIC_OP_NOR = 8, - VK_LOGIC_OP_EQUIVALENT = 9, - VK_LOGIC_OP_INVERT = 10, - VK_LOGIC_OP_OR_REVERSE = 11, - VK_LOGIC_OP_COPY_INVERTED = 12, - VK_LOGIC_OP_OR_INVERTED = 13, - VK_LOGIC_OP_NAND = 14, - VK_LOGIC_OP_SET = 15, - VK_LOGIC_OP_MAX_ENUM = 2147483647, -) -@cenum(VkBorderColor, - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0, - VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1, - VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2, - VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3, - VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4, - VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5, - VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003, - VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004, - VK_BORDER_COLOR_MAX_ENUM = 2147483647, -) -@cenum(VkFilter, - VK_FILTER_NEAREST = 0, - VK_FILTER_LINEAR = 1, - VK_FILTER_CUBIC_IMG = 1000015000, - VK_FILTER_CUBIC_EXT = 1000015000, - VK_FILTER_MAX_ENUM = 2147483647, -) -@cenum(VkSamplerAddressMode, - VK_SAMPLER_ADDRESS_MODE_REPEAT = 0, - VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1, - VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2, - VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3, - VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4, - VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4, - VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647, -) -@cenum(VkSamplerMipmapMode, - VK_SAMPLER_MIPMAP_MODE_NEAREST = 0, - VK_SAMPLER_MIPMAP_MODE_LINEAR = 1, - VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647, -) -@cenum(VkDescriptorType, - VK_DESCRIPTOR_TYPE_SAMPLER = 0, - VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1, - VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2, - VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3, - VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4, - VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5, - VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6, - VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7, - VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8, - VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9, - VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10, - VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000, - VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, - VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, - VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000, - VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkAttachmentLoadOp, - VK_ATTACHMENT_LOAD_OP_LOAD = 0, - VK_ATTACHMENT_LOAD_OP_CLEAR = 1, - VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2, - VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647, -) -@cenum(VkAttachmentStoreOp, - VK_ATTACHMENT_STORE_OP_STORE = 0, - VK_ATTACHMENT_STORE_OP_DONT_CARE = 1, - VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000, - VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647, -) -@cenum(VkPipelineBindPoint, - VK_PIPELINE_BIND_POINT_GRAPHICS = 0, - VK_PIPELINE_BIND_POINT_COMPUTE = 1, - VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000, - VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000, - VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647, -) -@cenum(VkCommandBufferLevel, - VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0, - VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1, - VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647, -) -@cenum(VkIndexType, - VK_INDEX_TYPE_UINT16 = 0, - VK_INDEX_TYPE_UINT32 = 1, - VK_INDEX_TYPE_NONE_KHR = 1000165000, - VK_INDEX_TYPE_UINT8_EXT = 1000265000, - VK_INDEX_TYPE_NONE_NV = 1000165000, - VK_INDEX_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkSubpassContents, - VK_SUBPASS_CONTENTS_INLINE = 0, - VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1, - VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647, -) -@cenum(VkAccessFlagBits, - VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1, - VK_ACCESS_INDEX_READ_BIT = 2, - VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4, - VK_ACCESS_UNIFORM_READ_BIT = 8, - VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16, - VK_ACCESS_SHADER_READ_BIT = 32, - VK_ACCESS_SHADER_WRITE_BIT = 64, - VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128, - VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256, - VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512, - VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024, - VK_ACCESS_TRANSFER_READ_BIT = 2048, - VK_ACCESS_TRANSFER_WRITE_BIT = 4096, - VK_ACCESS_HOST_READ_BIT = 8192, - VK_ACCESS_HOST_WRITE_BIT = 16384, - VK_ACCESS_MEMORY_READ_BIT = 32768, - VK_ACCESS_MEMORY_WRITE_BIT = 65536, - VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432, - VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864, - VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728, - VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576, - VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288, - VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152, - VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304, - VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608, - VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216, - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072, - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144, - VK_ACCESS_NONE_KHR = 0, - VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152, - VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304, - VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608, - VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkAccessFlags = VkFlags - -@cenum(VkImageAspectFlagBits, - VK_IMAGE_ASPECT_COLOR_BIT = 1, - VK_IMAGE_ASPECT_DEPTH_BIT = 2, - VK_IMAGE_ASPECT_STENCIL_BIT = 4, - VK_IMAGE_ASPECT_METADATA_BIT = 8, - VK_IMAGE_ASPECT_PLANE_0_BIT = 16, - VK_IMAGE_ASPECT_PLANE_1_BIT = 32, - VK_IMAGE_ASPECT_PLANE_2_BIT = 64, - VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128, - VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256, - VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512, - VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024, - VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16, - VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32, - VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64, - VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkImageAspectFlags = VkFlags - -@cenum(VkFormatFeatureFlagBits, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1, - VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2, - VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4, - VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8, - VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16, - VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32, - VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64, - VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128, - VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256, - VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512, - VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024, - VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096, - VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384, - VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768, - VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152, - VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304, - VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192, - VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 33554432, - VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 67108864, - VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728, - VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456, - VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912, - VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216, - VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824, - VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384, - VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536, - VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152, - VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304, - VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192, - VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkFormatFeatureFlags = VkFlags - -@cenum(VkImageCreateFlagBits, - VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1, - VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2, - VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4, - VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8, - VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16, - VK_IMAGE_CREATE_ALIAS_BIT = 1024, - VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64, - VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32, - VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128, - VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256, - VK_IMAGE_CREATE_PROTECTED_BIT = 2048, - VK_IMAGE_CREATE_DISJOINT_BIT = 512, - VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192, - VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096, - VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384, - VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64, - VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32, - VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128, - VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256, - VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512, - VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024, - VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkImageCreateFlags = VkFlags - -@cenum(VkSampleCountFlagBits, - VK_SAMPLE_COUNT_1_BIT = 1, - VK_SAMPLE_COUNT_2_BIT = 2, - VK_SAMPLE_COUNT_4_BIT = 4, - VK_SAMPLE_COUNT_8_BIT = 8, - VK_SAMPLE_COUNT_16_BIT = 16, - VK_SAMPLE_COUNT_32_BIT = 32, - VK_SAMPLE_COUNT_64_BIT = 64, - VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkSampleCountFlags = VkFlags - -@cenum(VkImageUsageFlagBits, - VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1, - VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2, - VK_IMAGE_USAGE_SAMPLED_BIT = 4, - VK_IMAGE_USAGE_STORAGE_BIT = 8, - VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16, - VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32, - VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64, - VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128, - VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR = 1024, - VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 2048, - VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 4096, - VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 8192, - VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 16384, - VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR = 32768, - VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256, - VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512, - VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256, - VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkImageUsageFlags = VkFlags -const VkInstanceCreateFlags = VkFlags - -@cenum(VkMemoryHeapFlagBits, - VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1, - VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2, - VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2, - VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkMemoryHeapFlags = VkFlags - -@cenum(VkMemoryPropertyFlagBits, - VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1, - VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2, - VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4, - VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8, - VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16, - VK_MEMORY_PROPERTY_PROTECTED_BIT = 32, - VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64, - VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128, - VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkMemoryPropertyFlags = VkFlags - -@cenum(VkQueueFlagBits, - VK_QUEUE_GRAPHICS_BIT = 1, - VK_QUEUE_COMPUTE_BIT = 2, - VK_QUEUE_TRANSFER_BIT = 4, - VK_QUEUE_SPARSE_BINDING_BIT = 8, - VK_QUEUE_PROTECTED_BIT = 16, - VK_QUEUE_VIDEO_DECODE_BIT_KHR = 32, - VK_QUEUE_VIDEO_ENCODE_BIT_KHR = 64, - VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkQueueFlags = VkFlags -const VkDeviceCreateFlags = VkFlags - -@cenum(VkDeviceQueueCreateFlagBits, - VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1, - VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkDeviceQueueCreateFlags = VkFlags - -@cenum(VkPipelineStageFlagBits, - VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1, - VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2, - VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4, - VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8, - VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16, - VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32, - VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64, - VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128, - VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256, - VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512, - VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024, - VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048, - VK_PIPELINE_STAGE_TRANSFER_BIT = 4096, - VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192, - VK_PIPELINE_STAGE_HOST_BIT = 16384, - VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768, - VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536, - VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216, - VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144, - VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432, - VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152, - VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304, - VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288, - VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576, - VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608, - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072, - VK_PIPELINE_STAGE_NONE_KHR = 0, - VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152, - VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432, - VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304, - VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkPipelineStageFlags = VkFlags -const VkMemoryMapFlags = VkFlags - -@cenum(VkSparseMemoryBindFlagBits, - VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1, - VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkSparseMemoryBindFlags = VkFlags - -@cenum(VkSparseImageFormatFlagBits, - VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1, - VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2, - VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4, - VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkSparseImageFormatFlags = VkFlags - -@cenum(VkFenceCreateFlagBits, - VK_FENCE_CREATE_SIGNALED_BIT = 1, - VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkFenceCreateFlags = VkFlags -const VkSemaphoreCreateFlags = VkFlags - -@cenum(VkEventCreateFlagBits, - VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = 1, - VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkEventCreateFlags = VkFlags - -@cenum(VkQueryPipelineStatisticFlagBits, - VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1, - VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2, - VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4, - VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8, - VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16, - VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32, - VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64, - VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128, - VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256, - VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512, - VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024, - VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkQueryPipelineStatisticFlags = VkFlags -const VkQueryPoolCreateFlags = VkFlags - -@cenum(VkQueryResultFlagBits, - VK_QUERY_RESULT_64_BIT = 1, - VK_QUERY_RESULT_WAIT_BIT = 2, - VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4, - VK_QUERY_RESULT_PARTIAL_BIT = 8, - VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 16, - VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkQueryResultFlags = VkFlags - -@cenum(VkBufferCreateFlagBits, - VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1, - VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2, - VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4, - VK_BUFFER_CREATE_PROTECTED_BIT = 8, - VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16, - VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16, - VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16, - VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkBufferCreateFlags = VkFlags - -@cenum(VkBufferUsageFlagBits, - VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1, - VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2, - VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4, - VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8, - VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16, - VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32, - VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64, - VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128, - VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256, - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072, - VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 8192, - VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 16384, - VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 32768, - VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536, - VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048, - VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096, - VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512, - VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 524288, - VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 1048576, - VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR = 1024, - VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024, - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072, - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072, - VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkBufferUsageFlags = VkFlags -const VkBufferViewCreateFlags = VkFlags - -@cenum(VkImageViewCreateFlagBits, - VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1, - VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2, - VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkImageViewCreateFlags = VkFlags - -@cenum(VkShaderModuleCreateFlagBits, - VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkShaderModuleCreateFlags = VkFlags - -@cenum(VkPipelineCacheCreateFlagBits, - VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1, - VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkPipelineCacheCreateFlags = VkFlags - -@cenum(VkColorComponentFlagBits, - VK_COLOR_COMPONENT_R_BIT = 1, - VK_COLOR_COMPONENT_G_BIT = 2, - VK_COLOR_COMPONENT_B_BIT = 4, - VK_COLOR_COMPONENT_A_BIT = 8, - VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkColorComponentFlags = VkFlags - -@cenum(VkPipelineCreateFlagBits, - VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1, - VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2, - VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4, - VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8, - VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16, - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384, - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768, - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536, - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072, - VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096, - VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192, - VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 524288, - VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32, - VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64, - VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128, - VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144, - VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048, - VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256, - VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512, - VK_PIPELINE_CREATE_DISPATCH_BASE = 16, - VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8, - VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16, - VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkPipelineCreateFlags = VkFlags - -@cenum(VkPipelineShaderStageCreateFlagBits, - VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1, - VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2, - VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkPipelineShaderStageCreateFlags = VkFlags - -@cenum(VkShaderStageFlagBits, - VK_SHADER_STAGE_VERTEX_BIT = 1, - VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2, - VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4, - VK_SHADER_STAGE_GEOMETRY_BIT = 8, - VK_SHADER_STAGE_FRAGMENT_BIT = 16, - VK_SHADER_STAGE_COMPUTE_BIT = 32, - VK_SHADER_STAGE_ALL_GRAPHICS = 31, - VK_SHADER_STAGE_ALL = 2147483647, - VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256, - VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512, - VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024, - VK_SHADER_STAGE_MISS_BIT_KHR = 2048, - VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096, - VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192, - VK_SHADER_STAGE_TASK_BIT_NV = 64, - VK_SHADER_STAGE_MESH_BIT_NV = 128, - VK_SHADER_STAGE_RAYGEN_BIT_NV = 256, - VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512, - VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024, - VK_SHADER_STAGE_MISS_BIT_NV = 2048, - VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096, - VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192, - VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647, -) -@cenum(VkCullModeFlagBits, - VK_CULL_MODE_NONE = 0, - VK_CULL_MODE_FRONT_BIT = 1, - VK_CULL_MODE_BACK_BIT = 2, - VK_CULL_MODE_FRONT_AND_BACK = 3, - VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkCullModeFlags = VkFlags -const VkPipelineVertexInputStateCreateFlags = VkFlags -const VkPipelineInputAssemblyStateCreateFlags = VkFlags -const VkPipelineTessellationStateCreateFlags = VkFlags -const VkPipelineViewportStateCreateFlags = VkFlags -const VkPipelineRasterizationStateCreateFlags = VkFlags -const VkPipelineMultisampleStateCreateFlags = VkFlags -const VkPipelineDepthStencilStateCreateFlags = VkFlags -const VkPipelineColorBlendStateCreateFlags = VkFlags -const VkPipelineDynamicStateCreateFlags = VkFlags -const VkPipelineLayoutCreateFlags = VkFlags -const VkShaderStageFlags = VkFlags - -@cenum(VkSamplerCreateFlagBits, - VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1, - VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2, - VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkSamplerCreateFlags = VkFlags - -@cenum(VkDescriptorPoolCreateFlagBits, - VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1, - VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2, - VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4, - VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2, - VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkDescriptorPoolCreateFlags = VkFlags -const VkDescriptorPoolResetFlags = VkFlags - -@cenum(VkDescriptorSetLayoutCreateFlagBits, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE = 4, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkDescriptorSetLayoutCreateFlags = VkFlags - -@cenum(VkAttachmentDescriptionFlagBits, - VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1, - VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkAttachmentDescriptionFlags = VkFlags - -@cenum(VkDependencyFlagBits, - VK_DEPENDENCY_BY_REGION_BIT = 1, - VK_DEPENDENCY_DEVICE_GROUP_BIT = 4, - VK_DEPENDENCY_VIEW_LOCAL_BIT = 2, - VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2, - VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4, - VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkDependencyFlags = VkFlags - -@cenum(VkFramebufferCreateFlagBits, - VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1, - VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1, - VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkFramebufferCreateFlags = VkFlags - -@cenum(VkRenderPassCreateFlagBits, - VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2, - VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkRenderPassCreateFlags = VkFlags - -@cenum(VkSubpassDescriptionFlagBits, - VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1, - VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2, - VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4, - VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8, - VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkSubpassDescriptionFlags = VkFlags - -@cenum(VkCommandPoolCreateFlagBits, - VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1, - VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2, - VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4, - VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkCommandPoolCreateFlags = VkFlags - -@cenum(VkCommandPoolResetFlagBits, - VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1, - VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkCommandPoolResetFlags = VkFlags - -@cenum(VkCommandBufferUsageFlagBits, - VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1, - VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2, - VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4, - VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkCommandBufferUsageFlags = VkFlags - -@cenum(VkQueryControlFlagBits, - VK_QUERY_CONTROL_PRECISE_BIT = 1, - VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkQueryControlFlags = VkFlags - -@cenum(VkCommandBufferResetFlagBits, - VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1, - VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkCommandBufferResetFlags = VkFlags - -@cenum(VkStencilFaceFlagBits, - VK_STENCIL_FACE_FRONT_BIT = 1, - VK_STENCIL_FACE_BACK_BIT = 2, - VK_STENCIL_FACE_FRONT_AND_BACK = 3, - VK_STENCIL_FRONT_AND_BACK = 3, - VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkStencilFaceFlags = VkFlags - -struct VkExtent2D - width::UInt32 - height::UInt32 -end - -struct VkExtent3D - width::UInt32 - height::UInt32 - depth::UInt32 -end - -struct VkOffset2D - x::Int32 - y::Int32 -end - -struct VkOffset3D - x::Int32 - y::Int32 - z::Int32 -end - -struct VkRect2D - offset::VkOffset2D - extent::VkExtent2D -end - -struct VkBaseInStructure - sType::VkStructureType - pNext::Ptr{VkBaseInStructure} -end - -struct VkBaseOutStructure - sType::VkStructureType - pNext::Ptr{VkBaseOutStructure} -end - -struct VkBufferMemoryBarrier - sType::VkStructureType - pNext::Ptr{Cvoid} - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags - srcQueueFamilyIndex::UInt32 - dstQueueFamilyIndex::UInt32 - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize -end - -struct VkDispatchIndirectCommand - x::UInt32 - y::UInt32 - z::UInt32 -end - -struct VkDrawIndexedIndirectCommand - indexCount::UInt32 - instanceCount::UInt32 - firstIndex::UInt32 - vertexOffset::Int32 - firstInstance::UInt32 -end - -struct VkDrawIndirectCommand - vertexCount::UInt32 - instanceCount::UInt32 - firstVertex::UInt32 - firstInstance::UInt32 -end - -struct VkImageSubresourceRange - aspectMask::VkImageAspectFlags - baseMipLevel::UInt32 - levelCount::UInt32 - baseArrayLayer::UInt32 - layerCount::UInt32 -end - -struct VkImageMemoryBarrier - sType::VkStructureType - pNext::Ptr{Cvoid} - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags - oldLayout::VkImageLayout - newLayout::VkImageLayout - srcQueueFamilyIndex::UInt32 - dstQueueFamilyIndex::UInt32 - image::VkImage - subresourceRange::VkImageSubresourceRange -end - -struct VkMemoryBarrier - sType::VkStructureType - pNext::Ptr{Cvoid} - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags -end - -const PFN_vkAllocationFunction = Ptr{Cvoid} -const PFN_vkFreeFunction = Ptr{Cvoid} -const PFN_vkInternalAllocationNotification = Ptr{Cvoid} -const PFN_vkInternalFreeNotification = Ptr{Cvoid} -const PFN_vkReallocationFunction = Ptr{Cvoid} -const PFN_vkVoidFunction = Ptr{Cvoid} - -struct VkAllocationCallbacks - pUserData::Ptr{Cvoid} - pfnAllocation::PFN_vkAllocationFunction - pfnReallocation::PFN_vkReallocationFunction - pfnFree::PFN_vkFreeFunction - pfnInternalAllocation::PFN_vkInternalAllocationNotification - pfnInternalFree::PFN_vkInternalFreeNotification -end - -struct VkApplicationInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - pApplicationName::Cstring - applicationVersion::UInt32 - pEngineName::Cstring - engineVersion::UInt32 - apiVersion::UInt32 -end - -struct VkFormatProperties - linearTilingFeatures::VkFormatFeatureFlags - optimalTilingFeatures::VkFormatFeatureFlags - bufferFeatures::VkFormatFeatureFlags -end - -struct VkImageFormatProperties - maxExtent::VkExtent3D - maxMipLevels::UInt32 - maxArrayLayers::UInt32 - sampleCounts::VkSampleCountFlags - maxResourceSize::VkDeviceSize -end - -struct VkInstanceCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkInstanceCreateFlags - pApplicationInfo::Ptr{VkApplicationInfo} - enabledLayerCount::UInt32 - ppEnabledLayerNames::Ptr{Cstring} - enabledExtensionCount::UInt32 - ppEnabledExtensionNames::Ptr{Cstring} -end - -struct VkMemoryHeap - size::VkDeviceSize - flags::VkMemoryHeapFlags -end - -struct VkMemoryType - propertyFlags::VkMemoryPropertyFlags - heapIndex::UInt32 -end - -struct VkPhysicalDeviceFeatures - robustBufferAccess::VkBool32 - fullDrawIndexUint32::VkBool32 - imageCubeArray::VkBool32 - independentBlend::VkBool32 - geometryShader::VkBool32 - tessellationShader::VkBool32 - sampleRateShading::VkBool32 - dualSrcBlend::VkBool32 - logicOp::VkBool32 - multiDrawIndirect::VkBool32 - drawIndirectFirstInstance::VkBool32 - depthClamp::VkBool32 - depthBiasClamp::VkBool32 - fillModeNonSolid::VkBool32 - depthBounds::VkBool32 - wideLines::VkBool32 - largePoints::VkBool32 - alphaToOne::VkBool32 - multiViewport::VkBool32 - samplerAnisotropy::VkBool32 - textureCompressionETC2::VkBool32 - textureCompressionASTC_LDR::VkBool32 - textureCompressionBC::VkBool32 - occlusionQueryPrecise::VkBool32 - pipelineStatisticsQuery::VkBool32 - vertexPipelineStoresAndAtomics::VkBool32 - fragmentStoresAndAtomics::VkBool32 - shaderTessellationAndGeometryPointSize::VkBool32 - shaderImageGatherExtended::VkBool32 - shaderStorageImageExtendedFormats::VkBool32 - shaderStorageImageMultisample::VkBool32 - shaderStorageImageReadWithoutFormat::VkBool32 - shaderStorageImageWriteWithoutFormat::VkBool32 - shaderUniformBufferArrayDynamicIndexing::VkBool32 - shaderSampledImageArrayDynamicIndexing::VkBool32 - shaderStorageBufferArrayDynamicIndexing::VkBool32 - shaderStorageImageArrayDynamicIndexing::VkBool32 - shaderClipDistance::VkBool32 - shaderCullDistance::VkBool32 - shaderFloat64::VkBool32 - shaderInt64::VkBool32 - shaderInt16::VkBool32 - shaderResourceResidency::VkBool32 - shaderResourceMinLod::VkBool32 - sparseBinding::VkBool32 - sparseResidencyBuffer::VkBool32 - sparseResidencyImage2D::VkBool32 - sparseResidencyImage3D::VkBool32 - sparseResidency2Samples::VkBool32 - sparseResidency4Samples::VkBool32 - sparseResidency8Samples::VkBool32 - sparseResidency16Samples::VkBool32 - sparseResidencyAliased::VkBool32 - variableMultisampleRate::VkBool32 - inheritedQueries::VkBool32 -end - -struct VkPhysicalDeviceLimits - maxImageDimension1D::UInt32 - maxImageDimension2D::UInt32 - maxImageDimension3D::UInt32 - maxImageDimensionCube::UInt32 - maxImageArrayLayers::UInt32 - maxTexelBufferElements::UInt32 - maxUniformBufferRange::UInt32 - maxStorageBufferRange::UInt32 - maxPushConstantsSize::UInt32 - maxMemoryAllocationCount::UInt32 - maxSamplerAllocationCount::UInt32 - bufferImageGranularity::VkDeviceSize - sparseAddressSpaceSize::VkDeviceSize - maxBoundDescriptorSets::UInt32 - maxPerStageDescriptorSamplers::UInt32 - maxPerStageDescriptorUniformBuffers::UInt32 - maxPerStageDescriptorStorageBuffers::UInt32 - maxPerStageDescriptorSampledImages::UInt32 - maxPerStageDescriptorStorageImages::UInt32 - maxPerStageDescriptorInputAttachments::UInt32 - maxPerStageResources::UInt32 - maxDescriptorSetSamplers::UInt32 - maxDescriptorSetUniformBuffers::UInt32 - maxDescriptorSetUniformBuffersDynamic::UInt32 - maxDescriptorSetStorageBuffers::UInt32 - maxDescriptorSetStorageBuffersDynamic::UInt32 - maxDescriptorSetSampledImages::UInt32 - maxDescriptorSetStorageImages::UInt32 - maxDescriptorSetInputAttachments::UInt32 - maxVertexInputAttributes::UInt32 - maxVertexInputBindings::UInt32 - maxVertexInputAttributeOffset::UInt32 - maxVertexInputBindingStride::UInt32 - maxVertexOutputComponents::UInt32 - maxTessellationGenerationLevel::UInt32 - maxTessellationPatchSize::UInt32 - maxTessellationControlPerVertexInputComponents::UInt32 - maxTessellationControlPerVertexOutputComponents::UInt32 - maxTessellationControlPerPatchOutputComponents::UInt32 - maxTessellationControlTotalOutputComponents::UInt32 - maxTessellationEvaluationInputComponents::UInt32 - maxTessellationEvaluationOutputComponents::UInt32 - maxGeometryShaderInvocations::UInt32 - maxGeometryInputComponents::UInt32 - maxGeometryOutputComponents::UInt32 - maxGeometryOutputVertices::UInt32 - maxGeometryTotalOutputComponents::UInt32 - maxFragmentInputComponents::UInt32 - maxFragmentOutputAttachments::UInt32 - maxFragmentDualSrcAttachments::UInt32 - maxFragmentCombinedOutputResources::UInt32 - maxComputeSharedMemorySize::UInt32 - maxComputeWorkGroupCount::NTuple{3, UInt32} - maxComputeWorkGroupInvocations::UInt32 - maxComputeWorkGroupSize::NTuple{3, UInt32} - subPixelPrecisionBits::UInt32 - subTexelPrecisionBits::UInt32 - mipmapPrecisionBits::UInt32 - maxDrawIndexedIndexValue::UInt32 - maxDrawIndirectCount::UInt32 - maxSamplerLodBias::Cfloat - maxSamplerAnisotropy::Cfloat - maxViewports::UInt32 - maxViewportDimensions::NTuple{2, UInt32} - viewportBoundsRange::NTuple{2, Cfloat} - viewportSubPixelBits::UInt32 - minMemoryMapAlignment::Csize_t - minTexelBufferOffsetAlignment::VkDeviceSize - minUniformBufferOffsetAlignment::VkDeviceSize - minStorageBufferOffsetAlignment::VkDeviceSize - minTexelOffset::Int32 - maxTexelOffset::UInt32 - minTexelGatherOffset::Int32 - maxTexelGatherOffset::UInt32 - minInterpolationOffset::Cfloat - maxInterpolationOffset::Cfloat - subPixelInterpolationOffsetBits::UInt32 - maxFramebufferWidth::UInt32 - maxFramebufferHeight::UInt32 - maxFramebufferLayers::UInt32 - framebufferColorSampleCounts::VkSampleCountFlags - framebufferDepthSampleCounts::VkSampleCountFlags - framebufferStencilSampleCounts::VkSampleCountFlags - framebufferNoAttachmentsSampleCounts::VkSampleCountFlags - maxColorAttachments::UInt32 - sampledImageColorSampleCounts::VkSampleCountFlags - sampledImageIntegerSampleCounts::VkSampleCountFlags - sampledImageDepthSampleCounts::VkSampleCountFlags - sampledImageStencilSampleCounts::VkSampleCountFlags - storageImageSampleCounts::VkSampleCountFlags - maxSampleMaskWords::UInt32 - timestampComputeAndGraphics::VkBool32 - timestampPeriod::Cfloat - maxClipDistances::UInt32 - maxCullDistances::UInt32 - maxCombinedClipAndCullDistances::UInt32 - discreteQueuePriorities::UInt32 - pointSizeRange::NTuple{2, Cfloat} - lineWidthRange::NTuple{2, Cfloat} - pointSizeGranularity::Cfloat - lineWidthGranularity::Cfloat - strictLines::VkBool32 - standardSampleLocations::VkBool32 - optimalBufferCopyOffsetAlignment::VkDeviceSize - optimalBufferCopyRowPitchAlignment::VkDeviceSize - nonCoherentAtomSize::VkDeviceSize -end - -struct VkPhysicalDeviceMemoryProperties - memoryTypeCount::UInt32 - memoryTypes::NTuple{32, VkMemoryType} - memoryHeapCount::UInt32 - memoryHeaps::NTuple{16, VkMemoryHeap} -end - -struct VkPhysicalDeviceSparseProperties - residencyStandard2DBlockShape::VkBool32 - residencyStandard2DMultisampleBlockShape::VkBool32 - residencyStandard3DBlockShape::VkBool32 - residencyAlignedMipSize::VkBool32 - residencyNonResidentStrict::VkBool32 -end - -struct VkPhysicalDeviceProperties - apiVersion::UInt32 - driverVersion::UInt32 - vendorID::UInt32 - deviceID::UInt32 - deviceType::VkPhysicalDeviceType - deviceName::NTuple{256, UInt8} - pipelineCacheUUID::NTuple{16, UInt8} - limits::VkPhysicalDeviceLimits - sparseProperties::VkPhysicalDeviceSparseProperties -end - -struct VkQueueFamilyProperties - queueFlags::VkQueueFlags - queueCount::UInt32 - timestampValidBits::UInt32 - minImageTransferGranularity::VkExtent3D -end - -struct VkDeviceQueueCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceQueueCreateFlags - queueFamilyIndex::UInt32 - queueCount::UInt32 - pQueuePriorities::Ptr{Cfloat} -end - -struct VkDeviceCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceCreateFlags - queueCreateInfoCount::UInt32 - pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} - enabledLayerCount::UInt32 - ppEnabledLayerNames::Ptr{Cstring} - enabledExtensionCount::UInt32 - ppEnabledExtensionNames::Ptr{Cstring} - pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} -end - -struct VkExtensionProperties - extensionName::NTuple{256, UInt8} - specVersion::UInt32 -end - -struct VkLayerProperties - layerName::NTuple{256, UInt8} - specVersion::UInt32 - implementationVersion::UInt32 - description::NTuple{256, UInt8} -end - -struct VkSubmitInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - pWaitDstStageMask::Ptr{VkPipelineStageFlags} - commandBufferCount::UInt32 - pCommandBuffers::Ptr{VkCommandBuffer} - signalSemaphoreCount::UInt32 - pSignalSemaphores::Ptr{VkSemaphore} -end - -struct VkMappedMemoryRange - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - offset::VkDeviceSize - size::VkDeviceSize -end - -struct VkMemoryAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - allocationSize::VkDeviceSize - memoryTypeIndex::UInt32 -end - -struct VkMemoryRequirements - size::VkDeviceSize - alignment::VkDeviceSize - memoryTypeBits::UInt32 -end - -struct VkSparseMemoryBind - resourceOffset::VkDeviceSize - size::VkDeviceSize - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - flags::VkSparseMemoryBindFlags -end - -struct VkSparseBufferMemoryBindInfo - buffer::VkBuffer - bindCount::UInt32 - pBinds::Ptr{VkSparseMemoryBind} -end - -struct VkSparseImageOpaqueMemoryBindInfo - image::VkImage - bindCount::UInt32 - pBinds::Ptr{VkSparseMemoryBind} -end - -struct VkImageSubresource - aspectMask::VkImageAspectFlags - mipLevel::UInt32 - arrayLayer::UInt32 -end - -struct VkSparseImageMemoryBind - subresource::VkImageSubresource - offset::VkOffset3D - extent::VkExtent3D - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - flags::VkSparseMemoryBindFlags -end - -struct VkSparseImageMemoryBindInfo - image::VkImage - bindCount::UInt32 - pBinds::Ptr{VkSparseImageMemoryBind} -end - -struct VkBindSparseInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - bufferBindCount::UInt32 - pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} - imageOpaqueBindCount::UInt32 - pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} - imageBindCount::UInt32 - pImageBinds::Ptr{VkSparseImageMemoryBindInfo} - signalSemaphoreCount::UInt32 - pSignalSemaphores::Ptr{VkSemaphore} -end - -struct VkSparseImageFormatProperties - aspectMask::VkImageAspectFlags - imageGranularity::VkExtent3D - flags::VkSparseImageFormatFlags -end - -struct VkSparseImageMemoryRequirements - formatProperties::VkSparseImageFormatProperties - imageMipTailFirstLod::UInt32 - imageMipTailSize::VkDeviceSize - imageMipTailOffset::VkDeviceSize - imageMipTailStride::VkDeviceSize -end - -struct VkFenceCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkFenceCreateFlags -end - -struct VkSemaphoreCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkSemaphoreCreateFlags -end - -struct VkEventCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkEventCreateFlags -end - -struct VkQueryPoolCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkQueryPoolCreateFlags - queryType::VkQueryType - queryCount::UInt32 - pipelineStatistics::VkQueryPipelineStatisticFlags -end - -struct VkBufferCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkBufferCreateFlags - size::VkDeviceSize - usage::VkBufferUsageFlags - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} -end - -struct VkBufferViewCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkBufferViewCreateFlags - buffer::VkBuffer - format::VkFormat - offset::VkDeviceSize - range::VkDeviceSize -end - -struct VkImageCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkImageCreateFlags - imageType::VkImageType - format::VkFormat - extent::VkExtent3D - mipLevels::UInt32 - arrayLayers::UInt32 - samples::VkSampleCountFlagBits - tiling::VkImageTiling - usage::VkImageUsageFlags - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} - initialLayout::VkImageLayout -end - -struct VkSubresourceLayout - offset::VkDeviceSize - size::VkDeviceSize - rowPitch::VkDeviceSize - arrayPitch::VkDeviceSize - depthPitch::VkDeviceSize -end - -struct VkComponentMapping - r::VkComponentSwizzle - g::VkComponentSwizzle - b::VkComponentSwizzle - a::VkComponentSwizzle -end - -struct VkImageViewCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkImageViewCreateFlags - image::VkImage - viewType::VkImageViewType - format::VkFormat - components::VkComponentMapping - subresourceRange::VkImageSubresourceRange -end - -struct VkShaderModuleCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkShaderModuleCreateFlags - codeSize::Csize_t - pCode::Ptr{UInt32} -end - -struct VkPipelineCacheCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCacheCreateFlags - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} -end - -struct VkSpecializationMapEntry - constantID::UInt32 - offset::UInt32 - size::Csize_t -end - -struct VkSpecializationInfo - mapEntryCount::UInt32 - pMapEntries::Ptr{VkSpecializationMapEntry} - dataSize::Csize_t - pData::Ptr{Cvoid} -end - -struct VkPipelineShaderStageCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineShaderStageCreateFlags - stage::VkShaderStageFlagBits - _module::VkShaderModule - pName::Cstring - pSpecializationInfo::Ptr{VkSpecializationInfo} -end - -struct VkComputePipelineCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCreateFlags - stage::VkPipelineShaderStageCreateInfo - layout::VkPipelineLayout - basePipelineHandle::VkPipeline - basePipelineIndex::Int32 -end - -struct VkVertexInputBindingDescription - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate -end - -struct VkVertexInputAttributeDescription - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 -end - -struct VkPipelineVertexInputStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineVertexInputStateCreateFlags - vertexBindingDescriptionCount::UInt32 - pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} - vertexAttributeDescriptionCount::UInt32 - pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} -end - -struct VkPipelineInputAssemblyStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineInputAssemblyStateCreateFlags - topology::VkPrimitiveTopology - primitiveRestartEnable::VkBool32 -end - -struct VkPipelineTessellationStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineTessellationStateCreateFlags - patchControlPoints::UInt32 -end - -struct VkViewport - x::Cfloat - y::Cfloat - width::Cfloat - height::Cfloat - minDepth::Cfloat - maxDepth::Cfloat -end - -struct VkPipelineViewportStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineViewportStateCreateFlags - viewportCount::UInt32 - pViewports::Ptr{VkViewport} - scissorCount::UInt32 - pScissors::Ptr{VkRect2D} -end - -struct VkPipelineRasterizationStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateCreateFlags - depthClampEnable::VkBool32 - rasterizerDiscardEnable::VkBool32 - polygonMode::VkPolygonMode - cullMode::VkCullModeFlags - frontFace::VkFrontFace - depthBiasEnable::VkBool32 - depthBiasConstantFactor::Cfloat - depthBiasClamp::Cfloat - depthBiasSlopeFactor::Cfloat - lineWidth::Cfloat -end - -struct VkPipelineMultisampleStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineMultisampleStateCreateFlags - rasterizationSamples::VkSampleCountFlagBits - sampleShadingEnable::VkBool32 - minSampleShading::Cfloat - pSampleMask::Ptr{VkSampleMask} - alphaToCoverageEnable::VkBool32 - alphaToOneEnable::VkBool32 -end - -struct VkStencilOpState - failOp::VkStencilOp - passOp::VkStencilOp - depthFailOp::VkStencilOp - compareOp::VkCompareOp - compareMask::UInt32 - writeMask::UInt32 - reference::UInt32 -end - -struct VkPipelineDepthStencilStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineDepthStencilStateCreateFlags - depthTestEnable::VkBool32 - depthWriteEnable::VkBool32 - depthCompareOp::VkCompareOp - depthBoundsTestEnable::VkBool32 - stencilTestEnable::VkBool32 - front::VkStencilOpState - back::VkStencilOpState - minDepthBounds::Cfloat - maxDepthBounds::Cfloat -end - -struct VkPipelineColorBlendAttachmentState - blendEnable::VkBool32 - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp - colorWriteMask::VkColorComponentFlags -end - -struct VkPipelineColorBlendStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineColorBlendStateCreateFlags - logicOpEnable::VkBool32 - logicOp::VkLogicOp - attachmentCount::UInt32 - pAttachments::Ptr{VkPipelineColorBlendAttachmentState} - blendConstants::NTuple{4, Cfloat} -end - -struct VkPipelineDynamicStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineDynamicStateCreateFlags - dynamicStateCount::UInt32 - pDynamicStates::Ptr{VkDynamicState} -end - -struct VkGraphicsPipelineCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCreateFlags - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} - pViewportState::Ptr{VkPipelineViewportStateCreateInfo} - pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} - pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} - pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} - pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} - pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} - layout::VkPipelineLayout - renderPass::VkRenderPass - subpass::UInt32 - basePipelineHandle::VkPipeline - basePipelineIndex::Int32 -end - -struct VkPushConstantRange - stageFlags::VkShaderStageFlags - offset::UInt32 - size::UInt32 -end - -struct VkPipelineLayoutCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineLayoutCreateFlags - setLayoutCount::UInt32 - pSetLayouts::Ptr{VkDescriptorSetLayout} - pushConstantRangeCount::UInt32 - pPushConstantRanges::Ptr{VkPushConstantRange} -end - -struct VkSamplerCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkSamplerCreateFlags - magFilter::VkFilter - minFilter::VkFilter - mipmapMode::VkSamplerMipmapMode - addressModeU::VkSamplerAddressMode - addressModeV::VkSamplerAddressMode - addressModeW::VkSamplerAddressMode - mipLodBias::Cfloat - anisotropyEnable::VkBool32 - maxAnisotropy::Cfloat - compareEnable::VkBool32 - compareOp::VkCompareOp - minLod::Cfloat - maxLod::Cfloat - borderColor::VkBorderColor - unnormalizedCoordinates::VkBool32 -end - -struct VkCopyDescriptorSet - sType::VkStructureType - pNext::Ptr{Cvoid} - srcSet::VkDescriptorSet - srcBinding::UInt32 - srcArrayElement::UInt32 - dstSet::VkDescriptorSet - dstBinding::UInt32 - dstArrayElement::UInt32 - descriptorCount::UInt32 -end - -struct VkDescriptorBufferInfo - buffer::VkBuffer - offset::VkDeviceSize - range::VkDeviceSize -end - -struct VkDescriptorImageInfo - sampler::VkSampler - imageView::VkImageView - imageLayout::VkImageLayout -end - -struct VkDescriptorPoolSize - type::VkDescriptorType - descriptorCount::UInt32 -end - -struct VkDescriptorPoolCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDescriptorPoolCreateFlags - maxSets::UInt32 - poolSizeCount::UInt32 - pPoolSizes::Ptr{VkDescriptorPoolSize} -end - -struct VkDescriptorSetAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorPool::VkDescriptorPool - descriptorSetCount::UInt32 - pSetLayouts::Ptr{VkDescriptorSetLayout} -end - -struct VkDescriptorSetLayoutBinding - binding::UInt32 - descriptorType::VkDescriptorType - descriptorCount::UInt32 - stageFlags::VkShaderStageFlags - pImmutableSamplers::Ptr{VkSampler} -end - -struct VkDescriptorSetLayoutCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDescriptorSetLayoutCreateFlags - bindingCount::UInt32 - pBindings::Ptr{VkDescriptorSetLayoutBinding} -end - -struct VkWriteDescriptorSet - sType::VkStructureType - pNext::Ptr{Cvoid} - dstSet::VkDescriptorSet - dstBinding::UInt32 - dstArrayElement::UInt32 - descriptorCount::UInt32 - descriptorType::VkDescriptorType - pImageInfo::Ptr{VkDescriptorImageInfo} - pBufferInfo::Ptr{VkDescriptorBufferInfo} - pTexelBufferView::Ptr{VkBufferView} -end - -struct VkAttachmentDescription - flags::VkAttachmentDescriptionFlags - format::VkFormat - samples::VkSampleCountFlagBits - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - stencilLoadOp::VkAttachmentLoadOp - stencilStoreOp::VkAttachmentStoreOp - initialLayout::VkImageLayout - finalLayout::VkImageLayout -end - -struct VkAttachmentReference - attachment::UInt32 - layout::VkImageLayout -end - -struct VkFramebufferCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkFramebufferCreateFlags - renderPass::VkRenderPass - attachmentCount::UInt32 - pAttachments::Ptr{VkImageView} - width::UInt32 - height::UInt32 - layers::UInt32 -end - -struct VkSubpassDescription - flags::VkSubpassDescriptionFlags - pipelineBindPoint::VkPipelineBindPoint - inputAttachmentCount::UInt32 - pInputAttachments::Ptr{VkAttachmentReference} - colorAttachmentCount::UInt32 - pColorAttachments::Ptr{VkAttachmentReference} - pResolveAttachments::Ptr{VkAttachmentReference} - pDepthStencilAttachment::Ptr{VkAttachmentReference} - preserveAttachmentCount::UInt32 - pPreserveAttachments::Ptr{UInt32} -end - -struct VkSubpassDependency - srcSubpass::UInt32 - dstSubpass::UInt32 - srcStageMask::VkPipelineStageFlags - dstStageMask::VkPipelineStageFlags - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags - dependencyFlags::VkDependencyFlags -end - -struct VkRenderPassCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkRenderPassCreateFlags - attachmentCount::UInt32 - pAttachments::Ptr{VkAttachmentDescription} - subpassCount::UInt32 - pSubpasses::Ptr{VkSubpassDescription} - dependencyCount::UInt32 - pDependencies::Ptr{VkSubpassDependency} -end - -struct VkCommandPoolCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkCommandPoolCreateFlags - queueFamilyIndex::UInt32 -end - -struct VkCommandBufferAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - commandPool::VkCommandPool - level::VkCommandBufferLevel - commandBufferCount::UInt32 -end - -struct VkCommandBufferInheritanceInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 - framebuffer::VkFramebuffer - occlusionQueryEnable::VkBool32 - queryFlags::VkQueryControlFlags - pipelineStatistics::VkQueryPipelineStatisticFlags -end - -struct VkCommandBufferBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkCommandBufferUsageFlags - pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} -end - -struct VkBufferCopy - srcOffset::VkDeviceSize - dstOffset::VkDeviceSize - size::VkDeviceSize -end - -struct VkImageSubresourceLayers - aspectMask::VkImageAspectFlags - mipLevel::UInt32 - baseArrayLayer::UInt32 - layerCount::UInt32 -end - -struct VkBufferImageCopy - bufferOffset::VkDeviceSize - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D -end - -struct VkClearColorValue - float32::NTuple{4, Cfloat} -end - -struct VkClearDepthStencilValue - depth::Cfloat - stencil::UInt32 -end - -struct VkClearValue - color::VkClearColorValue -end - -struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue -end - -struct VkClearRect - rect::VkRect2D - baseArrayLayer::UInt32 - layerCount::UInt32 -end - -struct VkImageBlit - srcSubresource::VkImageSubresourceLayers - srcOffsets::NTuple{2, VkOffset3D} - dstSubresource::VkImageSubresourceLayers - dstOffsets::NTuple{2, VkOffset3D} -end - -struct VkImageCopy - srcSubresource::VkImageSubresourceLayers - srcOffset::VkOffset3D - dstSubresource::VkImageSubresourceLayers - dstOffset::VkOffset3D - extent::VkExtent3D -end - -struct VkImageResolve - srcSubresource::VkImageSubresourceLayers - srcOffset::VkOffset3D - dstSubresource::VkImageSubresourceLayers - dstOffset::VkOffset3D - extent::VkExtent3D -end - -struct VkRenderPassBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - framebuffer::VkFramebuffer - renderArea::VkRect2D - clearValueCount::UInt32 - pClearValues::Ptr{VkClearValue} -end - -const PFN_vkCreateInstance = Ptr{Cvoid} -const PFN_vkDestroyInstance = Ptr{Cvoid} -const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} -const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} -const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} -const PFN_vkCreateDevice = Ptr{Cvoid} -const PFN_vkDestroyDevice = Ptr{Cvoid} -const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} -const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} -const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} -const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} -const PFN_vkGetDeviceQueue = Ptr{Cvoid} -const PFN_vkQueueSubmit = Ptr{Cvoid} -const PFN_vkQueueWaitIdle = Ptr{Cvoid} -const PFN_vkDeviceWaitIdle = Ptr{Cvoid} -const PFN_vkAllocateMemory = Ptr{Cvoid} -const PFN_vkFreeMemory = Ptr{Cvoid} -const PFN_vkMapMemory = Ptr{Cvoid} -const PFN_vkUnmapMemory = Ptr{Cvoid} -const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} -const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} -const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} -const PFN_vkBindBufferMemory = Ptr{Cvoid} -const PFN_vkBindImageMemory = Ptr{Cvoid} -const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} -const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} -const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} -const PFN_vkQueueBindSparse = Ptr{Cvoid} -const PFN_vkCreateFence = Ptr{Cvoid} -const PFN_vkDestroyFence = Ptr{Cvoid} -const PFN_vkResetFences = Ptr{Cvoid} -const PFN_vkGetFenceStatus = Ptr{Cvoid} -const PFN_vkWaitForFences = Ptr{Cvoid} -const PFN_vkCreateSemaphore = Ptr{Cvoid} -const PFN_vkDestroySemaphore = Ptr{Cvoid} -const PFN_vkCreateEvent = Ptr{Cvoid} -const PFN_vkDestroyEvent = Ptr{Cvoid} -const PFN_vkGetEventStatus = Ptr{Cvoid} -const PFN_vkSetEvent = Ptr{Cvoid} -const PFN_vkResetEvent = Ptr{Cvoid} -const PFN_vkCreateQueryPool = Ptr{Cvoid} -const PFN_vkDestroyQueryPool = Ptr{Cvoid} -const PFN_vkGetQueryPoolResults = Ptr{Cvoid} -const PFN_vkCreateBuffer = Ptr{Cvoid} -const PFN_vkDestroyBuffer = Ptr{Cvoid} -const PFN_vkCreateBufferView = Ptr{Cvoid} -const PFN_vkDestroyBufferView = Ptr{Cvoid} -const PFN_vkCreateImage = Ptr{Cvoid} -const PFN_vkDestroyImage = Ptr{Cvoid} -const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} -const PFN_vkCreateImageView = Ptr{Cvoid} -const PFN_vkDestroyImageView = Ptr{Cvoid} -const PFN_vkCreateShaderModule = Ptr{Cvoid} -const PFN_vkDestroyShaderModule = Ptr{Cvoid} -const PFN_vkCreatePipelineCache = Ptr{Cvoid} -const PFN_vkDestroyPipelineCache = Ptr{Cvoid} -const PFN_vkGetPipelineCacheData = Ptr{Cvoid} -const PFN_vkMergePipelineCaches = Ptr{Cvoid} -const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} -const PFN_vkCreateComputePipelines = Ptr{Cvoid} -const PFN_vkDestroyPipeline = Ptr{Cvoid} -const PFN_vkCreatePipelineLayout = Ptr{Cvoid} -const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} -const PFN_vkCreateSampler = Ptr{Cvoid} -const PFN_vkDestroySampler = Ptr{Cvoid} -const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} -const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} -const PFN_vkCreateDescriptorPool = Ptr{Cvoid} -const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} -const PFN_vkResetDescriptorPool = Ptr{Cvoid} -const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} -const PFN_vkFreeDescriptorSets = Ptr{Cvoid} -const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} -const PFN_vkCreateFramebuffer = Ptr{Cvoid} -const PFN_vkDestroyFramebuffer = Ptr{Cvoid} -const PFN_vkCreateRenderPass = Ptr{Cvoid} -const PFN_vkDestroyRenderPass = Ptr{Cvoid} -const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} -const PFN_vkCreateCommandPool = Ptr{Cvoid} -const PFN_vkDestroyCommandPool = Ptr{Cvoid} -const PFN_vkResetCommandPool = Ptr{Cvoid} -const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} -const PFN_vkFreeCommandBuffers = Ptr{Cvoid} -const PFN_vkBeginCommandBuffer = Ptr{Cvoid} -const PFN_vkEndCommandBuffer = Ptr{Cvoid} -const PFN_vkResetCommandBuffer = Ptr{Cvoid} -const PFN_vkCmdBindPipeline = Ptr{Cvoid} -const PFN_vkCmdSetViewport = Ptr{Cvoid} -const PFN_vkCmdSetScissor = Ptr{Cvoid} -const PFN_vkCmdSetLineWidth = Ptr{Cvoid} -const PFN_vkCmdSetDepthBias = Ptr{Cvoid} -const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} -const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} -const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} -const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} -const PFN_vkCmdSetStencilReference = Ptr{Cvoid} -const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} -const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} -const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} -const PFN_vkCmdDraw = Ptr{Cvoid} -const PFN_vkCmdDrawIndexed = Ptr{Cvoid} -const PFN_vkCmdDrawIndirect = Ptr{Cvoid} -const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} -const PFN_vkCmdDispatch = Ptr{Cvoid} -const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} -const PFN_vkCmdCopyBuffer = Ptr{Cvoid} -const PFN_vkCmdCopyImage = Ptr{Cvoid} -const PFN_vkCmdBlitImage = Ptr{Cvoid} -const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} -const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} -const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} -const PFN_vkCmdFillBuffer = Ptr{Cvoid} -const PFN_vkCmdClearColorImage = Ptr{Cvoid} -const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} -const PFN_vkCmdClearAttachments = Ptr{Cvoid} -const PFN_vkCmdResolveImage = Ptr{Cvoid} -const PFN_vkCmdSetEvent = Ptr{Cvoid} -const PFN_vkCmdResetEvent = Ptr{Cvoid} -const PFN_vkCmdWaitEvents = Ptr{Cvoid} -const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} -const PFN_vkCmdBeginQuery = Ptr{Cvoid} -const PFN_vkCmdEndQuery = Ptr{Cvoid} -const PFN_vkCmdResetQueryPool = Ptr{Cvoid} -const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} -const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} -const PFN_vkCmdPushConstants = Ptr{Cvoid} -const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} -const PFN_vkCmdNextSubpass = Ptr{Cvoid} -const PFN_vkCmdEndRenderPass = Ptr{Cvoid} -const PFN_vkCmdExecuteCommands = Ptr{Cvoid} -const VkSamplerYcbcrConversion_T = Cvoid -const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} -const VkDescriptorUpdateTemplate_T = Cvoid -const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} - -@cenum(VkPointClippingBehavior, - VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0, - VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1, - VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0, - VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1, - VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647, -) -@cenum(VkTessellationDomainOrigin, - VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0, - VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1, - VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0, - VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1, - VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647, -) -@cenum(VkSamplerYcbcrModelConversion, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647, -) -@cenum(VkSamplerYcbcrRange, - VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0, - VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1, - VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0, - VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1, - VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647, -) -@cenum(VkChromaLocation, - VK_CHROMA_LOCATION_COSITED_EVEN = 0, - VK_CHROMA_LOCATION_MIDPOINT = 1, - VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0, - VK_CHROMA_LOCATION_MIDPOINT_KHR = 1, - VK_CHROMA_LOCATION_MAX_ENUM = 2147483647, -) -@cenum(VkDescriptorUpdateTemplateType, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkSubgroupFeatureFlagBits, - VK_SUBGROUP_FEATURE_BASIC_BIT = 1, - VK_SUBGROUP_FEATURE_VOTE_BIT = 2, - VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4, - VK_SUBGROUP_FEATURE_BALLOT_BIT = 8, - VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16, - VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32, - VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64, - VK_SUBGROUP_FEATURE_QUAD_BIT = 128, - VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256, - VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkSubgroupFeatureFlags = VkFlags - -@cenum(VkPeerMemoryFeatureFlagBits, - VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1, - VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2, - VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4, - VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8, - VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1, - VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2, - VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4, - VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8, - VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkPeerMemoryFeatureFlags = VkFlags - -@cenum(VkMemoryAllocateFlagBits, - VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1, - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2, - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4, - VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1, - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2, - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4, - VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkMemoryAllocateFlags = VkFlags -const VkCommandPoolTrimFlags = VkFlags -const VkDescriptorUpdateTemplateCreateFlags = VkFlags - -@cenum(VkExternalMemoryHandleTypeFlagBits, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA = 2048, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkExternalMemoryHandleTypeFlags = VkFlags - -@cenum(VkExternalMemoryFeatureFlagBits, - VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1, - VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2, - VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4, - VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1, - VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2, - VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4, - VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkExternalMemoryFeatureFlags = VkFlags - -@cenum(VkExternalFenceHandleTypeFlagBits, - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1, - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2, - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4, - VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8, - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1, - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2, - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4, - VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8, - VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkExternalFenceHandleTypeFlags = VkFlags - -@cenum(VkExternalFenceFeatureFlagBits, - VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1, - VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2, - VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1, - VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2, - VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkExternalFenceFeatureFlags = VkFlags - -@cenum(VkFenceImportFlagBits, - VK_FENCE_IMPORT_TEMPORARY_BIT = 1, - VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1, - VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkFenceImportFlags = VkFlags - -@cenum(VkSemaphoreImportFlagBits, - VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1, - VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1, - VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkSemaphoreImportFlags = VkFlags - -@cenum(VkExternalSemaphoreHandleTypeFlagBits, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA = 128, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkExternalSemaphoreHandleTypeFlags = VkFlags - -@cenum(VkExternalSemaphoreFeatureFlagBits, - VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1, - VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2, - VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1, - VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2, - VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkExternalSemaphoreFeatureFlags = VkFlags - -struct VkPhysicalDeviceSubgroupProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - subgroupSize::UInt32 - supportedStages::VkShaderStageFlags - supportedOperations::VkSubgroupFeatureFlags - quadOperationsInAllStages::VkBool32 -end - -struct VkBindBufferMemoryInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer - memory::VkDeviceMemory - memoryOffset::VkDeviceSize -end - -struct VkBindImageMemoryInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - memory::VkDeviceMemory - memoryOffset::VkDeviceSize -end - -struct VkPhysicalDevice16BitStorageFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffer16BitAccess::VkBool32 - uniformAndStorageBuffer16BitAccess::VkBool32 - storagePushConstant16::VkBool32 - storageInputOutput16::VkBool32 -end - -struct VkMemoryDedicatedRequirements - sType::VkStructureType - pNext::Ptr{Cvoid} - prefersDedicatedAllocation::VkBool32 - requiresDedicatedAllocation::VkBool32 -end - -struct VkMemoryDedicatedAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer -end - -struct VkMemoryAllocateFlagsInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkMemoryAllocateFlags - deviceMask::UInt32 -end - -struct VkDeviceGroupRenderPassBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceMask::UInt32 - deviceRenderAreaCount::UInt32 - pDeviceRenderAreas::Ptr{VkRect2D} -end - -struct VkDeviceGroupCommandBufferBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceMask::UInt32 -end - -struct VkDeviceGroupSubmitInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphoreDeviceIndices::Ptr{UInt32} - commandBufferCount::UInt32 - pCommandBufferDeviceMasks::Ptr{UInt32} - signalSemaphoreCount::UInt32 - pSignalSemaphoreDeviceIndices::Ptr{UInt32} -end - -struct VkDeviceGroupBindSparseInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - resourceDeviceIndex::UInt32 - memoryDeviceIndex::UInt32 -end - -struct VkBindBufferMemoryDeviceGroupInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} -end - -struct VkBindImageMemoryDeviceGroupInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} - splitInstanceBindRegionCount::UInt32 - pSplitInstanceBindRegions::Ptr{VkRect2D} -end - -struct VkPhysicalDeviceGroupProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - physicalDeviceCount::UInt32 - physicalDevices::NTuple{32, VkPhysicalDevice} - subsetAllocation::VkBool32 -end - -struct VkDeviceGroupDeviceCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - physicalDeviceCount::UInt32 - pPhysicalDevices::Ptr{VkPhysicalDevice} -end - -struct VkBufferMemoryRequirementsInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer -end - -struct VkImageMemoryRequirementsInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage -end - -struct VkImageSparseMemoryRequirementsInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage -end - -struct VkMemoryRequirements2 - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryRequirements::VkMemoryRequirements -end - -struct VkSparseImageMemoryRequirements2 - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryRequirements::VkSparseImageMemoryRequirements -end - -struct VkPhysicalDeviceFeatures2 - sType::VkStructureType - pNext::Ptr{Cvoid} - features::VkPhysicalDeviceFeatures -end - -struct VkPhysicalDeviceProperties2 - sType::VkStructureType - pNext::Ptr{Cvoid} - properties::VkPhysicalDeviceProperties -end - -struct VkFormatProperties2 - sType::VkStructureType - pNext::Ptr{Cvoid} - formatProperties::VkFormatProperties -end - -struct VkImageFormatProperties2 - sType::VkStructureType - pNext::Ptr{Cvoid} - imageFormatProperties::VkImageFormatProperties -end - -struct VkPhysicalDeviceImageFormatInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - type::VkImageType - tiling::VkImageTiling - usage::VkImageUsageFlags - flags::VkImageCreateFlags -end - -struct VkQueueFamilyProperties2 - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyProperties::VkQueueFamilyProperties -end - -struct VkPhysicalDeviceMemoryProperties2 - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryProperties::VkPhysicalDeviceMemoryProperties -end - -struct VkSparseImageFormatProperties2 - sType::VkStructureType - pNext::Ptr{Cvoid} - properties::VkSparseImageFormatProperties -end - -struct VkPhysicalDeviceSparseImageFormatInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - type::VkImageType - samples::VkSampleCountFlagBits - usage::VkImageUsageFlags - tiling::VkImageTiling -end - -struct VkPhysicalDevicePointClippingProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - pointClippingBehavior::VkPointClippingBehavior -end - -struct VkInputAttachmentAspectReference - subpass::UInt32 - inputAttachmentIndex::UInt32 - aspectMask::VkImageAspectFlags -end - -struct VkRenderPassInputAttachmentAspectCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - aspectReferenceCount::UInt32 - pAspectReferences::Ptr{VkInputAttachmentAspectReference} -end - -struct VkImageViewUsageCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkImageUsageFlags -end - -struct VkPipelineTessellationDomainOriginStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - domainOrigin::VkTessellationDomainOrigin -end - -struct VkRenderPassMultiviewCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassCount::UInt32 - pViewMasks::Ptr{UInt32} - dependencyCount::UInt32 - pViewOffsets::Ptr{Int32} - correlationMaskCount::UInt32 - pCorrelationMasks::Ptr{UInt32} -end - -struct VkPhysicalDeviceMultiviewFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - multiview::VkBool32 - multiviewGeometryShader::VkBool32 - multiviewTessellationShader::VkBool32 -end - -struct VkPhysicalDeviceMultiviewProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - maxMultiviewViewCount::UInt32 - maxMultiviewInstanceIndex::UInt32 -end - -struct VkPhysicalDeviceVariablePointersFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - variablePointersStorageBuffer::VkBool32 - variablePointers::VkBool32 -end - -const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures - -struct VkPhysicalDeviceProtectedMemoryFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - protectedMemory::VkBool32 -end - -struct VkPhysicalDeviceProtectedMemoryProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - protectedNoFault::VkBool32 -end - -struct VkDeviceQueueInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceQueueCreateFlags - queueFamilyIndex::UInt32 - queueIndex::UInt32 -end - -struct VkProtectedSubmitInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - protectedSubmit::VkBool32 -end - -struct VkSamplerYcbcrConversionCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - ycbcrModel::VkSamplerYcbcrModelConversion - ycbcrRange::VkSamplerYcbcrRange - components::VkComponentMapping - xChromaOffset::VkChromaLocation - yChromaOffset::VkChromaLocation - chromaFilter::VkFilter - forceExplicitReconstruction::VkBool32 -end - -struct VkSamplerYcbcrConversionInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - conversion::VkSamplerYcbcrConversion -end - -struct VkBindImagePlaneMemoryInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - planeAspect::VkImageAspectFlagBits -end - -struct VkImagePlaneMemoryRequirementsInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - planeAspect::VkImageAspectFlagBits -end - -struct VkPhysicalDeviceSamplerYcbcrConversionFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - samplerYcbcrConversion::VkBool32 -end - -struct VkSamplerYcbcrConversionImageFormatProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorCount::UInt32 -end - -struct VkDescriptorUpdateTemplateEntry - dstBinding::UInt32 - dstArrayElement::UInt32 - descriptorCount::UInt32 - descriptorType::VkDescriptorType - offset::Csize_t - stride::Csize_t -end - -struct VkDescriptorUpdateTemplateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDescriptorUpdateTemplateCreateFlags - descriptorUpdateEntryCount::UInt32 - pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} - templateType::VkDescriptorUpdateTemplateType - descriptorSetLayout::VkDescriptorSetLayout - pipelineBindPoint::VkPipelineBindPoint - pipelineLayout::VkPipelineLayout - set::UInt32 -end - -struct VkExternalMemoryProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlags - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags - compatibleHandleTypes::VkExternalMemoryHandleTypeFlags -end - -struct VkPhysicalDeviceExternalImageFormatInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits -end - -struct VkExternalImageFormatProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - externalMemoryProperties::VkExternalMemoryProperties -end - -struct VkPhysicalDeviceExternalBufferInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkBufferCreateFlags - usage::VkBufferUsageFlags - handleType::VkExternalMemoryHandleTypeFlagBits -end - -struct VkExternalBufferProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - externalMemoryProperties::VkExternalMemoryProperties -end - -struct VkPhysicalDeviceIDProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceUUID::NTuple{16, UInt8} - driverUUID::NTuple{16, UInt8} - deviceLUID::NTuple{8, UInt8} - deviceNodeMask::UInt32 - deviceLUIDValid::VkBool32 -end - -struct VkExternalMemoryImageCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlags -end - -struct VkExternalMemoryBufferCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlags -end - -struct VkExportMemoryAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlags -end - -struct VkPhysicalDeviceExternalFenceInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalFenceHandleTypeFlagBits -end - -struct VkExternalFenceProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags - compatibleHandleTypes::VkExternalFenceHandleTypeFlags - externalFenceFeatures::VkExternalFenceFeatureFlags -end - -struct VkExportFenceCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalFenceHandleTypeFlags -end - -struct VkExportSemaphoreCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalSemaphoreHandleTypeFlags -end - -struct VkPhysicalDeviceExternalSemaphoreInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalSemaphoreHandleTypeFlagBits -end - -struct VkExternalSemaphoreProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags - compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags - externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags -end - -struct VkPhysicalDeviceMaintenance3Properties - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPerSetDescriptors::UInt32 - maxMemoryAllocationSize::VkDeviceSize -end - -struct VkDescriptorSetLayoutSupport - sType::VkStructureType - pNext::Ptr{Cvoid} - supported::VkBool32 -end - -struct VkPhysicalDeviceShaderDrawParametersFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderDrawParameters::VkBool32 -end - -const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures -const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} -const PFN_vkBindBufferMemory2 = Ptr{Cvoid} -const PFN_vkBindImageMemory2 = Ptr{Cvoid} -const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} -const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} -const PFN_vkCmdDispatchBase = Ptr{Cvoid} -const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} -const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} -const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} -const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} -const PFN_vkTrimCommandPool = Ptr{Cvoid} -const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} -const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} -const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} -const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} -const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} -const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} -const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} - -@cenum(VkDriverId, - VK_DRIVER_ID_AMD_PROPRIETARY = 1, - VK_DRIVER_ID_AMD_OPEN_SOURCE = 2, - VK_DRIVER_ID_MESA_RADV = 3, - VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4, - VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5, - VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6, - VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7, - VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8, - VK_DRIVER_ID_ARM_PROPRIETARY = 9, - VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10, - VK_DRIVER_ID_GGP_PROPRIETARY = 11, - VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12, - VK_DRIVER_ID_MESA_LLVMPIPE = 13, - VK_DRIVER_ID_MOLTENVK = 14, - VK_DRIVER_ID_COREAVI_PROPRIETARY = 15, - VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1, - VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2, - VK_DRIVER_ID_MESA_RADV_KHR = 3, - VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4, - VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5, - VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6, - VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7, - VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8, - VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9, - VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10, - VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11, - VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12, - VK_DRIVER_ID_MAX_ENUM = 2147483647, -) -@cenum(VkShaderFloatControlsIndependence, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647, -) -@cenum(VkSamplerReductionMode, - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0, - VK_SAMPLER_REDUCTION_MODE_MIN = 1, - VK_SAMPLER_REDUCTION_MODE_MAX = 2, - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0, - VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1, - VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2, - VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647, -) -@cenum(VkSemaphoreType, - VK_SEMAPHORE_TYPE_BINARY = 0, - VK_SEMAPHORE_TYPE_TIMELINE = 1, - VK_SEMAPHORE_TYPE_BINARY_KHR = 0, - VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1, - VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkResolveModeFlagBits, - VK_RESOLVE_MODE_NONE = 0, - VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1, - VK_RESOLVE_MODE_AVERAGE_BIT = 2, - VK_RESOLVE_MODE_MIN_BIT = 4, - VK_RESOLVE_MODE_MAX_BIT = 8, - VK_RESOLVE_MODE_NONE_KHR = 0, - VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1, - VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2, - VK_RESOLVE_MODE_MIN_BIT_KHR = 4, - VK_RESOLVE_MODE_MAX_BIT_KHR = 8, - VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkResolveModeFlags = VkFlags - -@cenum(VkDescriptorBindingFlagBits, - VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1, - VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2, - VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4, - VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8, - VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1, - VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2, - VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4, - VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8, - VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkDescriptorBindingFlags = VkFlags - -@cenum(VkSemaphoreWaitFlagBits, - VK_SEMAPHORE_WAIT_ANY_BIT = 1, - VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1, - VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkSemaphoreWaitFlags = VkFlags - -struct VkPhysicalDeviceVulkan11Features - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffer16BitAccess::VkBool32 - uniformAndStorageBuffer16BitAccess::VkBool32 - storagePushConstant16::VkBool32 - storageInputOutput16::VkBool32 - multiview::VkBool32 - multiviewGeometryShader::VkBool32 - multiviewTessellationShader::VkBool32 - variablePointersStorageBuffer::VkBool32 - variablePointers::VkBool32 - protectedMemory::VkBool32 - samplerYcbcrConversion::VkBool32 - shaderDrawParameters::VkBool32 -end - -struct VkPhysicalDeviceVulkan11Properties - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceUUID::NTuple{16, UInt8} - driverUUID::NTuple{16, UInt8} - deviceLUID::NTuple{8, UInt8} - deviceNodeMask::UInt32 - deviceLUIDValid::VkBool32 - subgroupSize::UInt32 - subgroupSupportedStages::VkShaderStageFlags - subgroupSupportedOperations::VkSubgroupFeatureFlags - subgroupQuadOperationsInAllStages::VkBool32 - pointClippingBehavior::VkPointClippingBehavior - maxMultiviewViewCount::UInt32 - maxMultiviewInstanceIndex::UInt32 - protectedNoFault::VkBool32 - maxPerSetDescriptors::UInt32 - maxMemoryAllocationSize::VkDeviceSize -end - -struct VkPhysicalDeviceVulkan12Features - sType::VkStructureType - pNext::Ptr{Cvoid} - samplerMirrorClampToEdge::VkBool32 - drawIndirectCount::VkBool32 - storageBuffer8BitAccess::VkBool32 - uniformAndStorageBuffer8BitAccess::VkBool32 - storagePushConstant8::VkBool32 - shaderBufferInt64Atomics::VkBool32 - shaderSharedInt64Atomics::VkBool32 - shaderFloat16::VkBool32 - shaderInt8::VkBool32 - descriptorIndexing::VkBool32 - shaderInputAttachmentArrayDynamicIndexing::VkBool32 - shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 - shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 - shaderUniformBufferArrayNonUniformIndexing::VkBool32 - shaderSampledImageArrayNonUniformIndexing::VkBool32 - shaderStorageBufferArrayNonUniformIndexing::VkBool32 - shaderStorageImageArrayNonUniformIndexing::VkBool32 - shaderInputAttachmentArrayNonUniformIndexing::VkBool32 - shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 - shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 - descriptorBindingUniformBufferUpdateAfterBind::VkBool32 - descriptorBindingSampledImageUpdateAfterBind::VkBool32 - descriptorBindingStorageImageUpdateAfterBind::VkBool32 - descriptorBindingStorageBufferUpdateAfterBind::VkBool32 - descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingUpdateUnusedWhilePending::VkBool32 - descriptorBindingPartiallyBound::VkBool32 - descriptorBindingVariableDescriptorCount::VkBool32 - runtimeDescriptorArray::VkBool32 - samplerFilterMinmax::VkBool32 - scalarBlockLayout::VkBool32 - imagelessFramebuffer::VkBool32 - uniformBufferStandardLayout::VkBool32 - shaderSubgroupExtendedTypes::VkBool32 - separateDepthStencilLayouts::VkBool32 - hostQueryReset::VkBool32 - timelineSemaphore::VkBool32 - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 - vulkanMemoryModel::VkBool32 - vulkanMemoryModelDeviceScope::VkBool32 - vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 - shaderOutputViewportIndex::VkBool32 - shaderOutputLayer::VkBool32 - subgroupBroadcastDynamicId::VkBool32 -end - -struct VkConformanceVersion - major::UInt8 - minor::UInt8 - subminor::UInt8 - patch::UInt8 -end - -struct VkPhysicalDeviceVulkan12Properties - sType::VkStructureType - pNext::Ptr{Cvoid} - driverID::VkDriverId - driverName::NTuple{256, UInt8} - driverInfo::NTuple{256, UInt8} - conformanceVersion::VkConformanceVersion - denormBehaviorIndependence::VkShaderFloatControlsIndependence - roundingModeIndependence::VkShaderFloatControlsIndependence - shaderSignedZeroInfNanPreserveFloat16::VkBool32 - shaderSignedZeroInfNanPreserveFloat32::VkBool32 - shaderSignedZeroInfNanPreserveFloat64::VkBool32 - shaderDenormPreserveFloat16::VkBool32 - shaderDenormPreserveFloat32::VkBool32 - shaderDenormPreserveFloat64::VkBool32 - shaderDenormFlushToZeroFloat16::VkBool32 - shaderDenormFlushToZeroFloat32::VkBool32 - shaderDenormFlushToZeroFloat64::VkBool32 - shaderRoundingModeRTEFloat16::VkBool32 - shaderRoundingModeRTEFloat32::VkBool32 - shaderRoundingModeRTEFloat64::VkBool32 - shaderRoundingModeRTZFloat16::VkBool32 - shaderRoundingModeRTZFloat32::VkBool32 - shaderRoundingModeRTZFloat64::VkBool32 - maxUpdateAfterBindDescriptorsInAllPools::UInt32 - shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 - shaderSampledImageArrayNonUniformIndexingNative::VkBool32 - shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 - shaderStorageImageArrayNonUniformIndexingNative::VkBool32 - shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 - robustBufferAccessUpdateAfterBind::VkBool32 - quadDivergentImplicitLod::VkBool32 - maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 - maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 - maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 - maxPerStageUpdateAfterBindResources::UInt32 - maxDescriptorSetUpdateAfterBindSamplers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindSampledImages::UInt32 - maxDescriptorSetUpdateAfterBindStorageImages::UInt32 - maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 - supportedDepthResolveModes::VkResolveModeFlags - supportedStencilResolveModes::VkResolveModeFlags - independentResolveNone::VkBool32 - independentResolve::VkBool32 - filterMinmaxSingleComponentFormats::VkBool32 - filterMinmaxImageComponentMapping::VkBool32 - maxTimelineSemaphoreValueDifference::UInt64 - framebufferIntegerColorSampleCounts::VkSampleCountFlags -end - -struct VkImageFormatListCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - viewFormatCount::UInt32 - pViewFormats::Ptr{VkFormat} -end - -struct VkAttachmentDescription2 - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkAttachmentDescriptionFlags - format::VkFormat - samples::VkSampleCountFlagBits - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - stencilLoadOp::VkAttachmentLoadOp - stencilStoreOp::VkAttachmentStoreOp - initialLayout::VkImageLayout - finalLayout::VkImageLayout -end - -struct VkAttachmentReference2 - sType::VkStructureType - pNext::Ptr{Cvoid} - attachment::UInt32 - layout::VkImageLayout - aspectMask::VkImageAspectFlags -end - -struct VkSubpassDescription2 - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkSubpassDescriptionFlags - pipelineBindPoint::VkPipelineBindPoint - viewMask::UInt32 - inputAttachmentCount::UInt32 - pInputAttachments::Ptr{VkAttachmentReference2} - colorAttachmentCount::UInt32 - pColorAttachments::Ptr{VkAttachmentReference2} - pResolveAttachments::Ptr{VkAttachmentReference2} - pDepthStencilAttachment::Ptr{VkAttachmentReference2} - preserveAttachmentCount::UInt32 - pPreserveAttachments::Ptr{UInt32} -end - -struct VkSubpassDependency2 - sType::VkStructureType - pNext::Ptr{Cvoid} - srcSubpass::UInt32 - dstSubpass::UInt32 - srcStageMask::VkPipelineStageFlags - dstStageMask::VkPipelineStageFlags - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags - dependencyFlags::VkDependencyFlags - viewOffset::Int32 -end - -struct VkRenderPassCreateInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkRenderPassCreateFlags - attachmentCount::UInt32 - pAttachments::Ptr{VkAttachmentDescription2} - subpassCount::UInt32 - pSubpasses::Ptr{VkSubpassDescription2} - dependencyCount::UInt32 - pDependencies::Ptr{VkSubpassDependency2} - correlatedViewMaskCount::UInt32 - pCorrelatedViewMasks::Ptr{UInt32} -end - -struct VkSubpassBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - contents::VkSubpassContents -end - -struct VkSubpassEndInfo - sType::VkStructureType - pNext::Ptr{Cvoid} -end - -struct VkPhysicalDevice8BitStorageFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffer8BitAccess::VkBool32 - uniformAndStorageBuffer8BitAccess::VkBool32 - storagePushConstant8::VkBool32 -end - -struct VkPhysicalDeviceDriverProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - driverID::VkDriverId - driverName::NTuple{256, UInt8} - driverInfo::NTuple{256, UInt8} - conformanceVersion::VkConformanceVersion -end - -struct VkPhysicalDeviceShaderAtomicInt64Features - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderBufferInt64Atomics::VkBool32 - shaderSharedInt64Atomics::VkBool32 -end - -struct VkPhysicalDeviceShaderFloat16Int8Features - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderFloat16::VkBool32 - shaderInt8::VkBool32 -end - -struct VkPhysicalDeviceFloatControlsProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - denormBehaviorIndependence::VkShaderFloatControlsIndependence - roundingModeIndependence::VkShaderFloatControlsIndependence - shaderSignedZeroInfNanPreserveFloat16::VkBool32 - shaderSignedZeroInfNanPreserveFloat32::VkBool32 - shaderSignedZeroInfNanPreserveFloat64::VkBool32 - shaderDenormPreserveFloat16::VkBool32 - shaderDenormPreserveFloat32::VkBool32 - shaderDenormPreserveFloat64::VkBool32 - shaderDenormFlushToZeroFloat16::VkBool32 - shaderDenormFlushToZeroFloat32::VkBool32 - shaderDenormFlushToZeroFloat64::VkBool32 - shaderRoundingModeRTEFloat16::VkBool32 - shaderRoundingModeRTEFloat32::VkBool32 - shaderRoundingModeRTEFloat64::VkBool32 - shaderRoundingModeRTZFloat16::VkBool32 - shaderRoundingModeRTZFloat32::VkBool32 - shaderRoundingModeRTZFloat64::VkBool32 -end - -struct VkDescriptorSetLayoutBindingFlagsCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - bindingCount::UInt32 - pBindingFlags::Ptr{VkDescriptorBindingFlags} -end - -struct VkPhysicalDeviceDescriptorIndexingFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderInputAttachmentArrayDynamicIndexing::VkBool32 - shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 - shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 - shaderUniformBufferArrayNonUniformIndexing::VkBool32 - shaderSampledImageArrayNonUniformIndexing::VkBool32 - shaderStorageBufferArrayNonUniformIndexing::VkBool32 - shaderStorageImageArrayNonUniformIndexing::VkBool32 - shaderInputAttachmentArrayNonUniformIndexing::VkBool32 - shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 - shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 - descriptorBindingUniformBufferUpdateAfterBind::VkBool32 - descriptorBindingSampledImageUpdateAfterBind::VkBool32 - descriptorBindingStorageImageUpdateAfterBind::VkBool32 - descriptorBindingStorageBufferUpdateAfterBind::VkBool32 - descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingUpdateUnusedWhilePending::VkBool32 - descriptorBindingPartiallyBound::VkBool32 - descriptorBindingVariableDescriptorCount::VkBool32 - runtimeDescriptorArray::VkBool32 -end - -struct VkPhysicalDeviceDescriptorIndexingProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - maxUpdateAfterBindDescriptorsInAllPools::UInt32 - shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 - shaderSampledImageArrayNonUniformIndexingNative::VkBool32 - shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 - shaderStorageImageArrayNonUniformIndexingNative::VkBool32 - shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 - robustBufferAccessUpdateAfterBind::VkBool32 - quadDivergentImplicitLod::VkBool32 - maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 - maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 - maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 - maxPerStageUpdateAfterBindResources::UInt32 - maxDescriptorSetUpdateAfterBindSamplers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindSampledImages::UInt32 - maxDescriptorSetUpdateAfterBindStorageImages::UInt32 - maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 -end - -struct VkDescriptorSetVariableDescriptorCountAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetCount::UInt32 - pDescriptorCounts::Ptr{UInt32} -end - -struct VkDescriptorSetVariableDescriptorCountLayoutSupport - sType::VkStructureType - pNext::Ptr{Cvoid} - maxVariableDescriptorCount::UInt32 -end - -struct VkSubpassDescriptionDepthStencilResolve - sType::VkStructureType - pNext::Ptr{Cvoid} - depthResolveMode::VkResolveModeFlagBits - stencilResolveMode::VkResolveModeFlagBits - pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} -end - -struct VkPhysicalDeviceDepthStencilResolveProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedDepthResolveModes::VkResolveModeFlags - supportedStencilResolveModes::VkResolveModeFlags - independentResolveNone::VkBool32 - independentResolve::VkBool32 -end - -struct VkPhysicalDeviceScalarBlockLayoutFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - scalarBlockLayout::VkBool32 -end - -struct VkImageStencilUsageCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - stencilUsage::VkImageUsageFlags -end - -struct VkSamplerReductionModeCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - reductionMode::VkSamplerReductionMode -end - -struct VkPhysicalDeviceSamplerFilterMinmaxProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - filterMinmaxSingleComponentFormats::VkBool32 - filterMinmaxImageComponentMapping::VkBool32 -end - -struct VkPhysicalDeviceVulkanMemoryModelFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - vulkanMemoryModel::VkBool32 - vulkanMemoryModelDeviceScope::VkBool32 - vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 -end - -struct VkPhysicalDeviceImagelessFramebufferFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - imagelessFramebuffer::VkBool32 -end - -struct VkFramebufferAttachmentImageInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkImageCreateFlags - usage::VkImageUsageFlags - width::UInt32 - height::UInt32 - layerCount::UInt32 - viewFormatCount::UInt32 - pViewFormats::Ptr{VkFormat} -end - -struct VkFramebufferAttachmentsCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentImageInfoCount::UInt32 - pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} -end - -struct VkRenderPassAttachmentBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pAttachments::Ptr{VkImageView} -end - -struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - uniformBufferStandardLayout::VkBool32 -end - -struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSubgroupExtendedTypes::VkBool32 -end - -struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - separateDepthStencilLayouts::VkBool32 -end - -struct VkAttachmentReferenceStencilLayout - sType::VkStructureType - pNext::Ptr{Cvoid} - stencilLayout::VkImageLayout -end - -struct VkAttachmentDescriptionStencilLayout - sType::VkStructureType - pNext::Ptr{Cvoid} - stencilInitialLayout::VkImageLayout - stencilFinalLayout::VkImageLayout -end - -struct VkPhysicalDeviceHostQueryResetFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - hostQueryReset::VkBool32 -end - -struct VkPhysicalDeviceTimelineSemaphoreFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - timelineSemaphore::VkBool32 -end - -struct VkPhysicalDeviceTimelineSemaphoreProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTimelineSemaphoreValueDifference::UInt64 -end - -struct VkSemaphoreTypeCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphoreType::VkSemaphoreType - initialValue::UInt64 -end - -struct VkTimelineSemaphoreSubmitInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreValueCount::UInt32 - pWaitSemaphoreValues::Ptr{UInt64} - signalSemaphoreValueCount::UInt32 - pSignalSemaphoreValues::Ptr{UInt64} -end - -struct VkSemaphoreWaitInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkSemaphoreWaitFlags - semaphoreCount::UInt32 - pSemaphores::Ptr{VkSemaphore} - pValues::Ptr{UInt64} -end - -struct VkSemaphoreSignalInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - value::UInt64 -end - -struct VkPhysicalDeviceBufferDeviceAddressFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 -end - -struct VkBufferDeviceAddressInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer -end - -struct VkBufferOpaqueCaptureAddressCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - opaqueCaptureAddress::UInt64 -end - -struct VkMemoryOpaqueCaptureAddressAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - opaqueCaptureAddress::UInt64 -end - -struct VkDeviceMemoryOpaqueCaptureAddressInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory -end - -const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} -const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} -const PFN_vkCreateRenderPass2 = Ptr{Cvoid} -const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} -const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} -const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} -const PFN_vkResetQueryPool = Ptr{Cvoid} -const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} -const PFN_vkWaitSemaphores = Ptr{Cvoid} -const PFN_vkSignalSemaphore = Ptr{Cvoid} -const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} -const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} -const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} -const VkSurfaceKHR_T = Cvoid -const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} - -@cenum(VkPresentModeKHR, - VK_PRESENT_MODE_IMMEDIATE_KHR = 0, - VK_PRESENT_MODE_MAILBOX_KHR = 1, - VK_PRESENT_MODE_FIFO_KHR = 2, - VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3, - VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000, - VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001, - VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkColorSpaceKHR, - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0, - VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001, - VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002, - VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003, - VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004, - VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005, - VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006, - VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007, - VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008, - VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009, - VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010, - VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011, - VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012, - VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013, - VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014, - VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000, - VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0, - VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003, - VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkSurfaceTransformFlagBitsKHR, - VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1, - VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2, - VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4, - VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64, - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128, - VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256, - VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkCompositeAlphaFlagBitsKHR, - VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1, - VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2, - VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4, - VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8, - VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkCompositeAlphaFlagsKHR = VkFlags -const VkSurfaceTransformFlagsKHR = VkFlags - -struct VkSurfaceCapabilitiesKHR - minImageCount::UInt32 - maxImageCount::UInt32 - currentExtent::VkExtent2D - minImageExtent::VkExtent2D - maxImageExtent::VkExtent2D - maxImageArrayLayers::UInt32 - supportedTransforms::VkSurfaceTransformFlagsKHR - currentTransform::VkSurfaceTransformFlagBitsKHR - supportedCompositeAlpha::VkCompositeAlphaFlagsKHR - supportedUsageFlags::VkImageUsageFlags -end - -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR -end - -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} -const VkSwapchainKHR_T = Cvoid -const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} - -@cenum(VkSwapchainCreateFlagBitsKHR, - VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1, - VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2, - VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4, - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkSwapchainCreateFlagsKHR = VkFlags - -@cenum(VkDeviceGroupPresentModeFlagBitsKHR, - VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1, - VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2, - VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4, - VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8, - VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkDeviceGroupPresentModeFlagsKHR = VkFlags - -struct VkSwapchainCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkSwapchainCreateFlagsKHR - surface::VkSurfaceKHR - minImageCount::UInt32 - imageFormat::VkFormat - imageColorSpace::VkColorSpaceKHR - imageExtent::VkExtent2D - imageArrayLayers::UInt32 - imageUsage::VkImageUsageFlags - imageSharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} - preTransform::VkSurfaceTransformFlagBitsKHR - compositeAlpha::VkCompositeAlphaFlagBitsKHR - presentMode::VkPresentModeKHR - clipped::VkBool32 - oldSwapchain::VkSwapchainKHR -end - -struct VkPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} -end - -struct VkImageSwapchainCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR -end - -struct VkBindImageMemorySwapchainInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 -end - -struct VkAcquireNextImageInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 -end - -struct VkDeviceGroupPresentCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR -end - -struct VkDeviceGroupPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR -end - -struct VkDeviceGroupSwapchainCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR -end - -const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} -const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} -const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} -const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} -const PFN_vkQueuePresentKHR = Ptr{Cvoid} -const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} -const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} -const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} -const VkDisplayKHR_T = Cvoid -const VkDisplayKHR = Ptr{VkDisplayKHR_T} -const VkDisplayModeKHR_T = Cvoid -const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} -const VkDisplayModeCreateFlagsKHR = VkFlags - -@cenum(VkDisplayPlaneAlphaFlagBitsKHR, - VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1, - VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2, - VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4, - VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8, - VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkDisplayPlaneAlphaFlagsKHR = VkFlags -const VkDisplaySurfaceCreateFlagsKHR = VkFlags - -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 -end - -struct VkDisplayModeCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR -end - -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR -end - -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D -end - -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 -end - -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Cstring - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 -end - -struct VkDisplaySurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D -end - -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} -const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} -const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} - -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 -end - -const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} -const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo -const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures -const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties -const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 -const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 -const VkFormatProperties2KHR = VkFormatProperties2 -const VkImageFormatProperties2KHR = VkImageFormatProperties2 -const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 -const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 -const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 -const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 -const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 -const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags -const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits -const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags -const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits -const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo -const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo -const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo -const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo -const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo -const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo -const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo -const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} -const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} -const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} -const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags -const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} -const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties -const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo -const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} -const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags -const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits -const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags -const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits -const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties -const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo -const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties -const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo -const VkExternalBufferPropertiesKHR = VkExternalBufferProperties -const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties -const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo - -struct VkImportMemoryFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint -end - -struct VkMemoryFdPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 -end - -struct VkMemoryGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits -end - -const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} -const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} -const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags -const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits -const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags -const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits -const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo -const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties -const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} -const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags -const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits -const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo - -struct VkImportSemaphoreFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - fd::Cint -end - -struct VkSemaphoreGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits -end - -const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} -const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} - -struct VkPhysicalDevicePushDescriptorPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 -end - -const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} -const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} -const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures - -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 -end - -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} -end - -struct VkPresentRegionsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} -end - -const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate -const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType -const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags -const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry -const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo -const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} -const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} -const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} -const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures -const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo -const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo -const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo -const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 -const VkAttachmentDescription2KHR = VkAttachmentDescription2 -const VkAttachmentReference2KHR = VkAttachmentReference2 -const VkSubpassDescription2KHR = VkSubpassDescription2 -const VkSubpassDependency2KHR = VkSubpassDependency2 -const VkSubpassBeginInfoKHR = VkSubpassBeginInfo -const VkSubpassEndInfoKHR = VkSubpassEndInfo -const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} -const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} -const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} -const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} - -struct VkSharedPresentSurfaceCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags -end - -const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} -const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits -const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags -const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits -const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo -const VkExternalFencePropertiesKHR = VkExternalFenceProperties -const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} -const VkFenceImportFlagsKHR = VkFenceImportFlags -const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits -const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo - -struct VkImportFenceFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - fd::Cint -end - -struct VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits -end - -const PFN_vkImportFenceFdKHR = Ptr{Cvoid} -const PFN_vkGetFenceFdKHR = Ptr{Cvoid} - -@cenum(VkPerformanceCounterUnitKHR, - VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0, - VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1, - VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2, - VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3, - VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4, - VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5, - VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6, - VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7, - VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8, - VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9, - VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10, - VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkPerformanceCounterScopeKHR, - VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0, - VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1, - VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2, - VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0, - VK_QUERY_SCOPE_RENDER_PASS_KHR = 1, - VK_QUERY_SCOPE_COMMAND_KHR = 2, - VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkPerformanceCounterStorageKHR, - VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0, - VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1, - VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2, - VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3, - VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4, - VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5, - VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkPerformanceCounterDescriptionFlagBitsKHR, - VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 1, - VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 2, - VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1, - VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2, - VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags - -@cenum(VkAcquireProfilingLockFlagBitsKHR, - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkAcquireProfilingLockFlagsKHR = VkFlags - -struct VkPhysicalDevicePerformanceQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 -end - -struct VkPhysicalDevicePerformanceQueryPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 -end - -struct VkPerformanceCounterKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} -end - -struct VkPerformanceCounterDescriptionKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, UInt8} - category::NTuple{256, UInt8} - description::NTuple{256, UInt8} -end - -struct VkQueryPoolPerformanceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - counterIndexCount::UInt32 - pCounterIndices::Ptr{UInt32} -end - -struct VkPerformanceCounterResultKHR - int64::Int64 -end - -struct VkAcquireProfilingLockInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 -end - -struct VkPerformanceQuerySubmitInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - counterPassIndex::UInt32 -end - -const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} -const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} -const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} -const VkPointClippingBehaviorKHR = VkPointClippingBehavior -const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin -const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties -const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo -const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference -const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo -const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo - -struct VkPhysicalDeviceSurfaceInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surface::VkSurfaceKHR -end - -struct VkSurfaceCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR -end - -struct VkSurfaceFormat2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR -end - -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -struct VkDisplayProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR -end - -struct VkDisplayPlaneProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR -end - -struct VkDisplayModeProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR -end - -struct VkDisplayPlaneInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 -end - -struct VkDisplayPlaneCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR -end - -const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} -const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} -const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} -const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements -const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo -const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 -const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 -const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 -const VkMemoryRequirements2KHR = VkMemoryRequirements2 -const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 -const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} -const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} -const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} -const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo -const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion -const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion -const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange -const VkChromaLocationKHR = VkChromaLocation -const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo -const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo -const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo -const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo -const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures -const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties -const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} -const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} -const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo -const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo -const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} -const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} -const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties -const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport -const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} -const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} -const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} -const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures -const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures -const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features - -struct VkPhysicalDeviceShaderClockFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSubgroupClock::VkBool32 - shaderDeviceClock::VkBool32 -end - -const VkDriverIdKHR = VkDriverId -const VkConformanceVersionKHR = VkConformanceVersion -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits -const VkResolveModeFlagsKHR = VkResolveModeFlags -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties -const VkSemaphoreTypeKHR = VkSemaphoreType -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} -const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures - -struct VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderTerminateInvocation::VkBool32 -end - -@cenum(VkFragmentShadingRateCombinerOpKHR, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = 0, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = 1, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = 2, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = 3, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = 4, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR = 2147483647, -) - -struct VkFragmentShadingRateAttachmentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D -end - -struct VkPipelineFragmentShadingRateStateCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} -end - -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 -end - -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - minFragmentShadingRateAttachmentTexelSize::VkExtent2D - maxFragmentShadingRateAttachmentTexelSize::VkExtent2D - maxFragmentShadingRateAttachmentTexelSizeAspectRatio::UInt32 - primitiveFragmentShadingRateWithMultipleViewports::VkBool32 - layeredShadingRateAttachments::VkBool32 - fragmentShadingRateNonTrivialCombinerOps::VkBool32 - maxFragmentSize::VkExtent2D - maxFragmentSizeAspectRatio::UInt32 - maxFragmentShadingRateCoverageSamples::UInt32 - maxFragmentShadingRateRasterizationSamples::VkSampleCountFlagBits - fragmentShadingRateWithShaderDepthStencilWrites::VkBool32 - fragmentShadingRateWithSampleMask::VkBool32 - fragmentShadingRateWithShaderSampleMask::VkBool32 - fragmentShadingRateWithConservativeRasterization::VkBool32 - fragmentShadingRateWithFragmentShaderInterlock::VkBool32 - fragmentShadingRateWithCustomSampleLocations::VkBool32 - fragmentShadingRateStrictMultiplyCombiner::VkBool32 -end - -struct VkPhysicalDeviceFragmentShadingRateKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D -end - -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} - -struct VkSurfaceProtectedCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsProtected::VkBool32 -end - -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout -const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures -const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures -const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo -const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo -const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo -const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo -const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} -const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} -const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} -const VkDeferredOperationKHR_T = Cvoid -const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} - -@cenum(VkPipelineExecutableStatisticFormatKHR, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647, -) - -struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 -end - -struct VkPipelineInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline -end - -struct VkPipelineExecutablePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, UInt8} - description::NTuple{256, UInt8} - subgroupSize::UInt32 -end - -struct VkPipelineExecutableInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline - executableIndex::UInt32 -end - -struct VkPipelineExecutableStatisticValueKHR - i64::Int64 -end - -struct VkPipelineExecutableStatisticKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, UInt8} - description::NTuple{256, UInt8} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR -end - -struct VkPipelineExecutableInternalRepresentationKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, UInt8} - description::NTuple{256, UInt8} - isText::VkBool32 - dataSize::Csize_t - pData::Ptr{Cvoid} -end - -const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} -const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} -const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} - -struct VkPipelineLibraryCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} -end - -const VkFlags64 = UInt64 -const VkPipelineStageFlags2KHR = VkFlags64 -const VkPipelineStageFlagBits2KHR = VkFlags64 -const VkAccessFlags2KHR = VkFlags64 -const VkAccessFlagBits2KHR = VkFlags64 - -@cenum(VkSubmitFlagBitsKHR, - VK_SUBMIT_PROTECTED_BIT_KHR = 1, - VK_SUBMIT_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkSubmitFlagsKHR = VkFlags - -struct VkMemoryBarrier2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcStageMask::VkPipelineStageFlags2KHR - srcAccessMask::VkAccessFlags2KHR - dstStageMask::VkPipelineStageFlags2KHR - dstAccessMask::VkAccessFlags2KHR -end - -struct VkBufferMemoryBarrier2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcStageMask::VkPipelineStageFlags2KHR - srcAccessMask::VkAccessFlags2KHR - dstStageMask::VkPipelineStageFlags2KHR - dstAccessMask::VkAccessFlags2KHR - srcQueueFamilyIndex::UInt32 - dstQueueFamilyIndex::UInt32 - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize -end - -struct VkImageMemoryBarrier2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcStageMask::VkPipelineStageFlags2KHR - srcAccessMask::VkAccessFlags2KHR - dstStageMask::VkPipelineStageFlags2KHR - dstAccessMask::VkAccessFlags2KHR - oldLayout::VkImageLayout - newLayout::VkImageLayout - srcQueueFamilyIndex::UInt32 - dstQueueFamilyIndex::UInt32 - image::VkImage - subresourceRange::VkImageSubresourceRange -end - -struct VkDependencyInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - dependencyFlags::VkDependencyFlags - memoryBarrierCount::UInt32 - pMemoryBarriers::Ptr{VkMemoryBarrier2KHR} - bufferMemoryBarrierCount::UInt32 - pBufferMemoryBarriers::Ptr{VkBufferMemoryBarrier2KHR} - imageMemoryBarrierCount::UInt32 - pImageMemoryBarriers::Ptr{VkImageMemoryBarrier2KHR} -end - -struct VkSemaphoreSubmitInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - value::UInt64 - stageMask::VkPipelineStageFlags2KHR - deviceIndex::UInt32 -end - -struct VkCommandBufferSubmitInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - commandBuffer::VkCommandBuffer - deviceMask::UInt32 -end - -struct VkSubmitInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkSubmitFlagsKHR - waitSemaphoreInfoCount::UInt32 - pWaitSemaphoreInfos::Ptr{VkSemaphoreSubmitInfoKHR} - commandBufferInfoCount::UInt32 - pCommandBufferInfos::Ptr{VkCommandBufferSubmitInfoKHR} - signalSemaphoreInfoCount::UInt32 - pSignalSemaphoreInfos::Ptr{VkSemaphoreSubmitInfoKHR} -end - -struct VkPhysicalDeviceSynchronization2FeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - synchronization2::VkBool32 -end - -struct VkQueueFamilyCheckpointProperties2NV - sType::VkStructureType - pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2KHR -end - -struct VkCheckpointData2NV - sType::VkStructureType - pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2KHR - pCheckpointMarker::Ptr{Cvoid} -end - -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} - -struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderZeroInitializeWorkgroupMemory::VkBool32 -end - -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 -end - -struct VkBufferCopy2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcOffset::VkDeviceSize - dstOffset::VkDeviceSize - size::VkDeviceSize -end - -struct VkCopyBufferInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcBuffer::VkBuffer - dstBuffer::VkBuffer - regionCount::UInt32 - pRegions::Ptr{VkBufferCopy2KHR} -end - -struct VkImageCopy2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcSubresource::VkImageSubresourceLayers - srcOffset::VkOffset3D - dstSubresource::VkImageSubresourceLayers - dstOffset::VkOffset3D - extent::VkExtent3D -end - -struct VkCopyImageInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcImage::VkImage - srcImageLayout::VkImageLayout - dstImage::VkImage - dstImageLayout::VkImageLayout - regionCount::UInt32 - pRegions::Ptr{VkImageCopy2KHR} -end - -struct VkBufferImageCopy2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferOffset::VkDeviceSize - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D -end - -struct VkCopyBufferToImageInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcBuffer::VkBuffer - dstImage::VkImage - dstImageLayout::VkImageLayout - regionCount::UInt32 - pRegions::Ptr{VkBufferImageCopy2KHR} -end - -struct VkCopyImageToBufferInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcImage::VkImage - srcImageLayout::VkImageLayout - dstBuffer::VkBuffer - regionCount::UInt32 - pRegions::Ptr{VkBufferImageCopy2KHR} -end - -struct VkImageBlit2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcSubresource::VkImageSubresourceLayers - srcOffsets::NTuple{2, VkOffset3D} - dstSubresource::VkImageSubresourceLayers - dstOffsets::NTuple{2, VkOffset3D} -end - -struct VkBlitImageInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcImage::VkImage - srcImageLayout::VkImageLayout - dstImage::VkImage - dstImageLayout::VkImageLayout - regionCount::UInt32 - pRegions::Ptr{VkImageBlit2KHR} - filter::VkFilter -end - -struct VkImageResolve2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcSubresource::VkImageSubresourceLayers - srcOffset::VkOffset3D - dstSubresource::VkImageSubresourceLayers - dstOffset::VkOffset3D - extent::VkExtent3D -end - -struct VkResolveImageInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcImage::VkImage - srcImageLayout::VkImageLayout - dstImage::VkImage - dstImageLayout::VkImageLayout - regionCount::UInt32 - pRegions::Ptr{VkImageResolve2KHR} -end - -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} -const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} -const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} -const VkDebugReportCallbackEXT_T = Cvoid -const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} - -@cenum(VkDebugReportObjectTypeEXT, - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0, - VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1, - VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2, - VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3, - VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4, - VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5, - VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6, - VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7, - VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8, - VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9, - VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10, - VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11, - VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12, - VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13, - VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14, - VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15, - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16, - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17, - VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18, - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20, - VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23, - VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24, - VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25, - VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26, - VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27, - VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28, - VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29, - VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30, - VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33, - VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000, - VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000150000, - VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000, - VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28, - VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33, - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000, - VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000, - VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647, -) -@cenum(VkDebugReportFlagBitsEXT, - VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1, - VK_DEBUG_REPORT_WARNING_BIT_EXT = 2, - VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4, - VK_DEBUG_REPORT_ERROR_BIT_EXT = 8, - VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16, - VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) - -const VkDebugReportFlagsEXT = VkFlags -const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} - -struct VkDebugReportCallbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDebugReportFlagsEXT - pfnCallback::PFN_vkDebugReportCallbackEXT - pUserData::Ptr{Cvoid} -end - -const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} -const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} -const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} - -@cenum(VkRasterizationOrderAMD, - VK_RASTERIZATION_ORDER_STRICT_AMD = 0, - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1, - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647, -) - -struct VkPipelineRasterizationStateRasterizationOrderAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD -end - -struct VkDebugMarkerObjectNameInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Cstring -end - -struct VkDebugMarkerObjectTagInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} -end - -struct VkDebugMarkerMarkerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pMarkerName::Cstring - color::NTuple{4, Cfloat} -end - -const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} -const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} -const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} -const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} -const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} - -struct VkDedicatedAllocationImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 -end - -struct VkDedicatedAllocationBufferCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 -end - -struct VkDedicatedAllocationMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer -end - -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 -end - -struct VkPhysicalDeviceTransformFeedbackPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTransformFeedbackStreams::UInt32 - maxTransformFeedbackBuffers::UInt32 - maxTransformFeedbackBufferSize::VkDeviceSize - maxTransformFeedbackStreamDataSize::UInt32 - maxTransformFeedbackBufferDataSize::UInt32 - maxTransformFeedbackBufferDataStride::UInt32 - transformFeedbackQueries::VkBool32 - transformFeedbackStreamsLinesTriangles::VkBool32 - transformFeedbackRasterizationStreamSelect::VkBool32 - transformFeedbackDraw::VkBool32 -end - -struct VkPipelineRasterizationStateStreamCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 -end - -const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} -const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} -const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} -const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} -const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} -const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} - -struct VkImageViewHandleInfoNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - descriptorType::VkDescriptorType - sampler::VkSampler -end - -struct VkImageViewAddressPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize -end - -const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} -const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} -const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} -const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} - -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 -end - -@cenum(VkShaderInfoTypeAMD, - VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0, - VK_SHADER_INFO_TYPE_BINARY_AMD = 1, - VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2, - VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647, -) - -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t -end - -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} -end - -const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} - -struct VkPhysicalDeviceCornerSampledImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cornerSampledImage::VkBool32 -end - -@cenum(VkExternalMemoryHandleTypeFlagBitsNV, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8, - VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647, -) - -const VkExternalMemoryHandleTypeFlagsNV = VkFlags - -@cenum(VkExternalMemoryFeatureFlagBitsNV, - VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1, - VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2, - VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4, - VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647, -) - -const VkExternalMemoryFeatureFlagsNV = VkFlags - -struct VkExternalImageFormatPropertiesNV - imageFormatProperties::VkImageFormatProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV - compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV -end - -const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} - -struct VkExternalMemoryImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV -end - -struct VkExportMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV -end - -@cenum(VkValidationCheckEXT, - VK_VALIDATION_CHECK_ALL_EXT = 0, - VK_VALIDATION_CHECK_SHADERS_EXT = 1, - VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647, -) - -struct VkValidationFlagsEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} -end - -struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - textureCompressionASTC_HDR::VkBool32 -end - -struct VkImageViewASTCDecodeModeEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - decodeMode::VkFormat -end - -struct VkPhysicalDeviceASTCDecodeFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 -end - -@cenum(VkConditionalRenderingFlagBitsEXT, - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1, - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) - -const VkConditionalRenderingFlagsEXT = VkFlags - -struct VkConditionalRenderingBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT -end - -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 -end - -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - conditionalRenderingEnable::VkBool32 -end - -const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} -const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} - -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat -end - -struct VkPipelineViewportWScalingStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} -end - -const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} -const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} - -@cenum(VkSurfaceCounterFlagBitsEXT, - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1, - VK_SURFACE_COUNTER_VBLANK_EXT = 1, - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) - -const VkSurfaceCounterFlagsEXT = VkFlags - -struct VkSurfaceCapabilities2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minImageCount::UInt32 - maxImageCount::UInt32 - currentExtent::VkExtent2D - minImageExtent::VkExtent2D - maxImageExtent::VkExtent2D - maxImageArrayLayers::UInt32 - supportedTransforms::VkSurfaceTransformFlagsKHR - currentTransform::VkSurfaceTransformFlagBitsKHR - supportedCompositeAlpha::VkCompositeAlphaFlagsKHR - supportedUsageFlags::VkImageUsageFlags - supportedSurfaceCounters::VkSurfaceCounterFlagsEXT -end - -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} - -@cenum(VkDisplayPowerStateEXT, - VK_DISPLAY_POWER_STATE_OFF_EXT = 0, - VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1, - VK_DISPLAY_POWER_STATE_ON_EXT = 2, - VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647, -) -@cenum(VkDeviceEventTypeEXT, - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0, - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647, -) -@cenum(VkDisplayEventTypeEXT, - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0, - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647, -) - -struct VkDisplayPowerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT -end - -struct VkDeviceEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT -end - -struct VkDisplayEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT -end - -struct VkSwapchainCounterCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT -end - -const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} -const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} -const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} -const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} - -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 -end - -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 -end - -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 -end - -struct VkPresentTimesInfoGOOGLE - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pTimes::Ptr{VkPresentTimeGOOGLE} -end - -const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} -const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} - -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 -end - -@cenum(VkViewportCoordinateSwizzleNV, - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0, - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1, - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2, - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3, - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4, - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5, - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6, - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7, - VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647, -) - -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags - -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV -end - -struct VkPipelineViewportSwizzleStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} -end - -@cenum(VkDiscardRectangleModeEXT, - VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0, - VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1, - VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647, -) - -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 -end - -struct VkPipelineDiscardRectangleStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} -end - -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} - -@cenum(VkConservativeRasterizationModeEXT, - VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0, - VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1, - VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2, - VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647, -) - -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 -end - -struct VkPipelineRasterizationConservativeStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat -end - -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 -end - -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 -end - -struct VkXYColorEXT - x::Cfloat - y::Cfloat -end - -struct VkHdrMetadataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat -end - -const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} -const VkDebugUtilsMessengerEXT_T = Cvoid -const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} -const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags - -@cenum(VkDebugUtilsMessageSeverityFlagBitsEXT, - VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1, - VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16, - VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256, - VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096, - VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) -@cenum(VkDebugUtilsMessageTypeFlagBitsEXT, - VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1, - VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2, - VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4, - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) - -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags - -struct VkDebugUtilsLabelEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pLabelName::Cstring - color::NTuple{4, Cfloat} -end - -struct VkDebugUtilsObjectNameInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Cstring -end - -struct VkDebugUtilsMessengerCallbackDataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCallbackDataFlagsEXT - pMessageIdName::Cstring - messageIdNumber::Int32 - pMessage::Cstring - queueLabelCount::UInt32 - pQueueLabels::Ptr{VkDebugUtilsLabelEXT} - cmdBufLabelCount::UInt32 - pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} - objectCount::UInt32 - pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} -end - -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} - -struct VkDebugUtilsMessengerCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} -end - -struct VkDebugUtilsObjectTagInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} -end - -const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} -const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} -const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} -const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} -const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} -const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} -const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} -const VkSamplerReductionModeEXT = VkSamplerReductionMode -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties - -struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - inlineUniformBlock::VkBool32 - descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 -end - -struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxInlineUniformBlockSize::UInt32 - maxPerStageDescriptorInlineUniformBlocks::UInt32 - maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 - maxDescriptorSetInlineUniformBlocks::UInt32 - maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 -end - -struct VkWriteDescriptorSetInlineUniformBlockEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - dataSize::UInt32 - pData::Ptr{Cvoid} -end - -struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxInlineUniformBlockBindings::UInt32 -end - -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat -end - -struct VkSampleLocationsInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} -end - -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT -end - -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT -end - -struct VkRenderPassSampleLocationsBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} -end - -struct VkPipelineSampleLocationsStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT -end - -struct VkPhysicalDeviceSampleLocationsPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 -end - -struct VkMultisamplePropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D -end - -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} - -@cenum(VkBlendOverlapEXT, - VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0, - VK_BLEND_OVERLAP_DISJOINT_EXT = 1, - VK_BLEND_OVERLAP_CONJOINT_EXT = 2, - VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647, -) - -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 -end - -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 -end - -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT -end - -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags - -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 -end - -@cenum(VkCoverageModulationModeNV, - VK_COVERAGE_MODULATION_MODE_NONE_NV = 0, - VK_COVERAGE_MODULATION_MODE_RGB_NV = 1, - VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2, - VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3, - VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647, -) - -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags - -struct VkPipelineCoverageModulationStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} -end - -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 -end - -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 -end - -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags -end - -struct VkDrmFormatModifierPropertiesListEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} -end - -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} -end - -struct VkImageDrmFormatModifierListCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} -end - -struct VkImageDrmFormatModifierExplicitCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} -end - -struct VkImageDrmFormatModifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 -end - -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} -const VkValidationCacheEXT_T = Cvoid -const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} - -@cenum(VkValidationCacheHeaderVersionEXT, - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1, - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647, -) - -const VkValidationCacheCreateFlagsEXT = VkFlags - -struct VkValidationCacheCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} -end - -struct VkShaderModuleValidationCacheCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT -end - -const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} -const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} -const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} -const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport - -@cenum(VkShadingRatePaletteEntryNV, - VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0, - VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1, - VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2, - VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3, - VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11, - VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647, -) -@cenum(VkCoarseSampleOrderTypeNV, - VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0, - VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1, - VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2, - VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3, - VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647, -) - -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} -end - -struct VkPipelineViewportShadingRateImageStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} -end - -struct VkPhysicalDeviceShadingRateImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 -end - -struct VkPhysicalDeviceShadingRateImagePropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 -end - -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 -end - -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} -end - -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} -end - -const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} -const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} -const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} -const VkAccelerationStructureNV_T = Cvoid -const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} - -@cenum(VkRayTracingShaderGroupTypeKHR, - VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0, - VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1, - VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2, - VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0, - VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1, - VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2, - VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647, -) - -const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR - -@cenum(VkGeometryTypeKHR, - VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0, - VK_GEOMETRY_TYPE_AABBS_KHR = 1, - VK_GEOMETRY_TYPE_INSTANCES_KHR = 2, - VK_GEOMETRY_TYPE_TRIANGLES_NV = 0, - VK_GEOMETRY_TYPE_AABBS_NV = 1, - VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647, -) - -const VkGeometryTypeNV = VkGeometryTypeKHR - -@cenum(VkAccelerationStructureTypeKHR, - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0, - VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1, - VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = 2, - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0, - VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1, - VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647, -) - -const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR - -@cenum(VkCopyAccelerationStructureModeKHR, - VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0, - VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1, - VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2, - VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3, - VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0, - VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1, - VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647, -) - -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR - -@cenum(VkAccelerationStructureMemoryRequirementsTypeNV, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV = 2147483647, -) -@cenum(VkGeometryFlagBitsKHR, - VK_GEOMETRY_OPAQUE_BIT_KHR = 1, - VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2, - VK_GEOMETRY_OPAQUE_BIT_NV = 1, - VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2, - VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkGeometryFlagsKHR = VkFlags -const VkGeometryFlagsNV = VkGeometryFlagsKHR -const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR - -@cenum(VkGeometryInstanceFlagBitsKHR, - VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1, - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2, - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4, - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8, - VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1, - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2, - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4, - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8, - VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkGeometryInstanceFlagsKHR = VkFlags -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR - -@cenum(VkBuildAccelerationStructureFlagBitsKHR, - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1, - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8, - VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16, - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1, - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8, - VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16, - VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkBuildAccelerationStructureFlagsKHR = VkFlags -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR - -struct VkRayTracingShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 -end - -struct VkRayTracingPipelineCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCreateFlags - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - groupCount::UInt32 - pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} - maxRecursionDepth::UInt32 - layout::VkPipelineLayout - basePipelineHandle::VkPipeline - basePipelineIndex::Int32 -end - -struct VkGeometryTrianglesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexData::VkBuffer - vertexOffset::VkDeviceSize - vertexCount::UInt32 - vertexStride::VkDeviceSize - vertexFormat::VkFormat - indexData::VkBuffer - indexOffset::VkDeviceSize - indexCount::UInt32 - indexType::VkIndexType - transformData::VkBuffer - transformOffset::VkDeviceSize -end - -struct VkGeometryAABBNV - sType::VkStructureType - pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize -end - -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV -end - -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR -end - -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} -end - -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV -end - -struct VkBindAccelerationStructureMemoryInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} -end - -struct VkWriteDescriptorSetAccelerationStructureNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} -end - -struct VkAccelerationStructureMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV -end - -struct VkPhysicalDeviceRayTracingPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 -end - -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} -end - -const VkTransformMatrixNV = VkTransformMatrixKHR - -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat -end - -const VkAabbPositionsNV = VkAabbPositionsKHR - -struct VkAccelerationStructureInstanceKHR - transform::VkTransformMatrixKHR - instanceCustomIndex::UInt32 - mask::UInt32 - instanceShaderBindingTableRecordOffset::UInt32 - flags::VkGeometryInstanceFlagsKHR - accelerationStructureReference::UInt64 -end - -const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR -const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} -const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} -const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} -const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} -const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} -const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} -const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} -const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} -const PFN_vkCompileDeferredNV = Ptr{Cvoid} - -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 -end - -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 -end - -struct VkPhysicalDeviceImageViewImageFormatInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageViewType::VkImageViewType -end - -struct VkFilterCubicImageViewImageFormatPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 -end - -@cenum(VkQueueGlobalPriorityEXT, - VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128, - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256, - VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512, - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024, - VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647, -) - -struct VkDeviceQueueGlobalPriorityCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityEXT -end - -struct VkImportMemoryHostPointerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} -end - -struct VkMemoryHostPointerPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 -end - -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize -end - -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} -const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} - -@cenum(VkPipelineCompilerControlFlagBitsAMD, - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647, -) - -const VkPipelineCompilerControlFlagsAMD = VkFlags - -struct VkPipelineCompilerControlCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - compilerControlFlags::VkPipelineCompilerControlFlagsAMD -end - -@cenum(VkTimeDomainEXT, - VK_TIME_DOMAIN_DEVICE_EXT = 0, - VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1, - VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2, - VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3, - VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647, -) - -struct VkCalibratedTimestampInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT -end - -const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} -const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} - -struct VkPhysicalDeviceShaderCorePropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderEngineCount::UInt32 - shaderArraysPerEngineCount::UInt32 - computeUnitsPerShaderArray::UInt32 - simdPerComputeUnit::UInt32 - wavefrontsPerSimd::UInt32 - wavefrontSize::UInt32 - sgprsPerSimd::UInt32 - minSgprAllocation::UInt32 - maxSgprAllocation::UInt32 - sgprAllocationGranularity::UInt32 - vgprsPerSimd::UInt32 - minVgprAllocation::UInt32 - maxVgprAllocation::UInt32 - vgprAllocationGranularity::UInt32 -end - -@cenum(VkMemoryOverallocationBehaviorAMD, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647, -) - -struct VkDeviceMemoryOverallocationCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD -end - -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 -end - -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 -end - -struct VkPipelineVertexInputDivisorStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} -end - -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 -end - -@cenum(VkPipelineCreationFeedbackFlagBitsEXT, - VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1, - VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2, - VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4, - VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) - -const VkPipelineCreationFeedbackFlagsEXT = VkFlags - -struct VkPipelineCreationFeedbackEXT - flags::VkPipelineCreationFeedbackFlagsEXT - duration::UInt64 -end - -struct VkPipelineCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} - pipelineStageCreationFeedbackCount::UInt32 - pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} -end - -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 -end - -struct VkPhysicalDeviceMeshShaderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 -end - -struct VkPhysicalDeviceMeshShaderPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxDrawMeshTasksCount::UInt32 - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskTotalMemorySize::UInt32 - maxTaskOutputCount::UInt32 - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshTotalMemorySize::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 -end - -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 -end - -const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} -const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} -const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} - -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 -end - -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - imageFootprint::VkBool32 -end - -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} -end - -struct VkPhysicalDeviceExclusiveScissorFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 -end - -const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} - -struct VkQueueFamilyCheckpointPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags -end - -struct VkCheckpointDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} -end - -const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} -const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} - -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 -end - -const VkPerformanceConfigurationINTEL_T = Cvoid -const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} - -@cenum(VkPerformanceConfigurationTypeINTEL, - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0, - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647, -) -@cenum(VkQueryPoolSamplingModeINTEL, - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0, - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647, -) -@cenum(VkPerformanceOverrideTypeINTEL, - VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0, - VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1, - VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647, -) -@cenum(VkPerformanceParameterTypeINTEL, - VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0, - VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1, - VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647, -) -@cenum(VkPerformanceValueTypeINTEL, - VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0, - VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1, - VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2, - VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3, - VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4, - VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647, -) - -struct VkPerformanceValueDataINTEL - value64::UInt64 -end - -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL -end - -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} -end - -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL -end - -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL - -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 -end - -struct VkPerformanceStreamMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt32 -end - -struct VkPerformanceOverrideInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 -end - -struct VkPerformanceConfigurationAcquireInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL -end - -const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} -const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} -const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} -const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} -const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} -const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} -const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} -const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} -const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} - -struct VkPhysicalDevicePCIBusInfoPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 -end - -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 -end - -struct VkSwapchainDisplayNativeHdrCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 -end - -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} - -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 -end - -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 -end - -struct VkRenderPassFragmentDensityMapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference -end - -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures - -struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - subgroupSizeControl::VkBool32 - computeFullSubgroups::VkBool32 -end - -struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minSubgroupSize::UInt32 - maxSubgroupSize::UInt32 - maxComputeWorkgroupSubgroups::UInt32 - requiredSubgroupSizeStages::VkShaderStageFlags -end - -struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - requiredSubgroupSize::UInt32 -end - -@cenum(VkShaderCorePropertiesFlagBitsAMD, - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647, -) - -const VkShaderCorePropertiesFlagsAMD = VkFlags - -struct VkPhysicalDeviceShaderCoreProperties2AMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 -end - -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 -end - -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 -end - -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} -end - -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryPriority::VkBool32 -end - -struct VkMemoryPriorityAllocateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - priority::Cfloat -end - -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 -end - -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 -end - -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo - -struct VkBufferDeviceAddressCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress -end - -const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} - -@cenum(VkToolPurposeFlagBitsEXT, - VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1, - VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2, - VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4, - VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8, - VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16, - VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32, - VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64, - VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) - -const VkToolPurposeFlagsEXT = VkFlags - -struct VkPhysicalDeviceToolPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, UInt8} - version::NTuple{256, UInt8} - purposes::VkToolPurposeFlagsEXT - description::NTuple{256, UInt8} - layer::NTuple{256, UInt8} -end - -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} -const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo - -@cenum(VkValidationFeatureEnableEXT, - VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0, - VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1, - VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2, - VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3, - VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4, - VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647, -) -@cenum(VkValidationFeatureDisableEXT, - VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0, - VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1, - VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2, - VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3, - VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4, - VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5, - VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6, - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647, -) - -struct VkValidationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} -end - -@cenum(VkComponentTypeNV, - VK_COMPONENT_TYPE_FLOAT16_NV = 0, - VK_COMPONENT_TYPE_FLOAT32_NV = 1, - VK_COMPONENT_TYPE_FLOAT64_NV = 2, - VK_COMPONENT_TYPE_SINT8_NV = 3, - VK_COMPONENT_TYPE_SINT16_NV = 4, - VK_COMPONENT_TYPE_SINT32_NV = 5, - VK_COMPONENT_TYPE_SINT64_NV = 6, - VK_COMPONENT_TYPE_UINT8_NV = 7, - VK_COMPONENT_TYPE_UINT16_NV = 8, - VK_COMPONENT_TYPE_UINT32_NV = 9, - VK_COMPONENT_TYPE_UINT64_NV = 10, - VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647, -) -@cenum(VkScopeNV, - VK_SCOPE_DEVICE_NV = 1, - VK_SCOPE_WORKGROUP_NV = 2, - VK_SCOPE_SUBGROUP_NV = 3, - VK_SCOPE_QUEUE_FAMILY_NV = 5, - VK_SCOPE_MAX_ENUM_NV = 2147483647, -) - -struct VkCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV -end - -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 -end - -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags -end - -const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} - -@cenum(VkCoverageReductionModeNV, - VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0, - VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1, - VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647, -) - -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags - -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 -end - -struct VkPipelineCoverageReductionStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV -end - -struct VkFramebufferMixedSamplesCombinationNV - sType::VkStructureType - pNext::Ptr{Cvoid} - coverageReductionMode::VkCoverageReductionModeNV - rasterizationSamples::VkSampleCountFlagBits - depthStencilSamples::VkSampleCountFlags - colorSamples::VkSampleCountFlags -end - -const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} - -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 -end - -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 -end - -@cenum(VkProvokingVertexModeEXT, - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0, - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1, - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647, -) - -struct VkPhysicalDeviceProvokingVertexFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 -end - -struct VkPhysicalDeviceProvokingVertexPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 -end - -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT -end - -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags - -struct VkHeadlessSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT -end - -const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} - -@cenum(VkLineRasterizationModeEXT, - VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0, - VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1, - VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2, - VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3, - VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647, -) - -struct VkPhysicalDeviceLineRasterizationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 -end - -struct VkPhysicalDeviceLineRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 -end - -struct VkPipelineRasterizationLineStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 -end - -const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} - -struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderBufferFloat32Atomics::VkBool32 - shaderBufferFloat32AtomicAdd::VkBool32 - shaderBufferFloat64Atomics::VkBool32 - shaderBufferFloat64AtomicAdd::VkBool32 - shaderSharedFloat32Atomics::VkBool32 - shaderSharedFloat32AtomicAdd::VkBool32 - shaderSharedFloat64Atomics::VkBool32 - shaderSharedFloat64AtomicAdd::VkBool32 - shaderImageFloat32Atomics::VkBool32 - shaderImageFloat32AtomicAdd::VkBool32 - sparseImageFloat32Atomics::VkBool32 - sparseImageFloat32AtomicAdd::VkBool32 -end - -const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures -const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} - -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 -end - -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 -end - -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} -const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} -const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} -const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} -const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} - -struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderDemoteToHelperInvocation::VkBool32 -end - -const VkIndirectCommandsLayoutNV_T = Cvoid -const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} - -@cenum(VkIndirectCommandsTokenTypeNV, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647, -) -@cenum(VkIndirectStateFlagBitsNV, - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1, - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647, -) - -const VkIndirectStateFlagsNV = VkFlags - -@cenum(VkIndirectCommandsLayoutUsageFlagBitsNV, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647, -) - -const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags - -struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxGraphicsShaderGroupCount::UInt32 - maxIndirectSequenceCount::UInt32 - maxIndirectCommandsTokenCount::UInt32 - maxIndirectCommandsStreamCount::UInt32 - maxIndirectCommandsTokenOffset::UInt32 - maxIndirectCommandsStreamStride::UInt32 - minSequencesCountBufferOffsetAlignment::UInt32 - minSequencesIndexBufferOffsetAlignment::UInt32 - minIndirectCommandsBufferOffsetAlignment::UInt32 -end - -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 -end - -struct VkGraphicsShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} -end - -struct VkGraphicsPipelineShaderGroupsCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} -end - -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 -end - -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType -end - -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 -end - -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 -end - -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize -end - -struct VkIndirectCommandsLayoutTokenNV - sType::VkStructureType - pNext::Ptr{Cvoid} - tokenType::VkIndirectCommandsTokenTypeNV - stream::UInt32 - offset::UInt32 - vertexBindingUnit::UInt32 - vertexDynamicStride::VkBool32 - pushconstantPipelineLayout::VkPipelineLayout - pushconstantShaderStageFlags::VkShaderStageFlags - pushconstantOffset::UInt32 - pushconstantSize::UInt32 - indirectStateFlags::VkIndirectStateFlagsNV - indexTypeCount::UInt32 - pIndexTypes::Ptr{VkIndexType} - pIndexTypeValues::Ptr{UInt32} -end - -struct VkIndirectCommandsLayoutCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} -end - -struct VkGeneratedCommandsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineBindPoint::VkPipelineBindPoint - pipeline::VkPipeline - indirectCommandsLayout::VkIndirectCommandsLayoutNV - streamCount::UInt32 - pStreams::Ptr{VkIndirectCommandsStreamNV} - sequencesCount::UInt32 - preprocessBuffer::VkBuffer - preprocessOffset::VkDeviceSize - preprocessSize::VkDeviceSize - sequencesCountBuffer::VkBuffer - sequencesCountOffset::VkDeviceSize - sequencesIndexBuffer::VkBuffer - sequencesIndexOffset::VkDeviceSize -end - -struct VkGeneratedCommandsMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineBindPoint::VkPipelineBindPoint - pipeline::VkPipeline - indirectCommandsLayout::VkIndirectCommandsLayoutNV - maxSequencesCount::UInt32 -end - -const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} -const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} -const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} - -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 -end - -struct VkCommandBufferInheritanceViewportScissorInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} -end - -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 -end - -struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - storageTexelBufferOffsetAlignmentBytes::VkDeviceSize - storageTexelBufferOffsetSingleTexelAlignment::VkBool32 - uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize - uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 -end - -struct VkRenderPassTransformBeginInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR -end - -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D -end - -@cenum(VkDeviceMemoryReportEventTypeEXT, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT = 0, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT = 1, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT = 2, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT = 3, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT = 4, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT = 2147483647, -) - -const VkDeviceMemoryReportFlagsEXT = VkFlags - -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 -end - -struct VkDeviceMemoryReportCallbackDataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 -end - -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} - -struct VkDeviceDeviceMemoryReportCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} -end - -struct VkPhysicalDeviceRobustness2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 -end - -struct VkPhysicalDeviceRobustness2PropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize -end - -struct VkSamplerCustomBorderColorCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat -end - -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 -end - -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 -end - -const VkPrivateDataSlotEXT_T = Cvoid -const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} - -@cenum(VkPrivateDataSlotCreateFlagBitsEXT, - VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) - -const VkPrivateDataSlotCreateFlagsEXT = VkFlags - -struct VkPhysicalDevicePrivateDataFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - privateData::VkBool32 -end - -struct VkDevicePrivateDataCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - privateDataSlotRequestCount::UInt32 -end - -struct VkPrivateDataSlotCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPrivateDataSlotCreateFlagsEXT -end - -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} - -struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineCreationCacheControl::VkBool32 -end - -@cenum(VkDeviceDiagnosticsConfigFlagBitsNV, - VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1, - VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2, - VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4, - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647, -) - -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags - -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 -end - -struct VkDeviceDiagnosticsConfigCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV -end - -@cenum(VkFragmentShadingRateTypeNV, - VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV = 0, - VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV = 1, - VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV = 2147483647, -) -@cenum(VkFragmentShadingRateNV, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = 0, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = 1, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV = 4, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV = 5, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV = 6, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV = 9, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = 10, - VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV = 11, - VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV = 12, - VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = 13, - VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = 14, - VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV = 15, - VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV = 2147483647, -) - -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 -end - -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits -end - -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} -end - -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} - -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 -end - -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 -end - -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 -end - -struct VkCopyCommandTransformInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR -end - -struct VkPhysicalDeviceImageRobustnessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustImageAccess::VkBool32 -end - -struct VkPhysicalDevice4444FormatsFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 -end - -const PFN_vkAcquireWinrtDisplayNV = Ptr{Cvoid} -const PFN_vkGetWinrtDisplayNV = Ptr{Cvoid} - -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 -end - -struct VkMutableDescriptorTypeListVALVE - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} -end - -struct VkMutableDescriptorTypeCreateInfoVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListVALVE} -end - -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 -end - -struct VkVertexInputBindingDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 -end - -struct VkVertexInputAttributeDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 -end - -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} - -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 -end - -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} - -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 -end - -struct VkPipelineColorWriteCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} -end - -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} -const VkAccelerationStructureKHR_T = Cvoid -const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} - -@cenum(VkBuildAccelerationStructureModeKHR, - VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = 0, - VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = 1, - VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkAccelerationStructureBuildTypeKHR, - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0, - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1, - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2, - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkAccelerationStructureCompatibilityKHR, - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0, - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1, - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkAccelerationStructureCreateFlagBitsKHR, - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1, - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkAccelerationStructureCreateFlagsKHR = VkFlags - -struct VkDeviceOrHostAddressKHR - deviceAddress::VkDeviceAddress -end - -struct VkDeviceOrHostAddressConstKHR - deviceAddress::VkDeviceAddress -end - -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 -end - -struct VkAccelerationStructureGeometryTrianglesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR -end - -struct VkAccelerationStructureGeometryAabbsDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize -end - -struct VkAccelerationStructureGeometryInstancesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR -end - -struct VkAccelerationStructureGeometryDataKHR - triangles::VkAccelerationStructureGeometryTrianglesDataKHR -end - -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end - -struct VkAccelerationStructureBuildGeometryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeKHR - flags::VkBuildAccelerationStructureFlagsKHR - mode::VkBuildAccelerationStructureModeKHR - srcAccelerationStructure::VkAccelerationStructureKHR - dstAccelerationStructure::VkAccelerationStructureKHR - geometryCount::UInt32 - pGeometries::Ptr{VkAccelerationStructureGeometryKHR} - ppGeometries::Ptr{Ptr{VkAccelerationStructureGeometryKHR}} - scratchData::VkDeviceOrHostAddressKHR -end - -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress -end - -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end - -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 -end - -struct VkPhysicalDeviceAccelerationStructurePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxPrimitiveCount::UInt64 - maxPerStageDescriptorAccelerationStructures::UInt32 - maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 - maxDescriptorSetAccelerationStructures::UInt32 - maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 - minAccelerationStructureScratchOffsetAlignment::UInt32 -end - -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end - -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} -end - -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end - -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end - -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end - -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -end - -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} -const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} - -@cenum(VkShaderGroupShaderKHR, - VK_SHADER_GROUP_SHADER_GENERAL_KHR = 0, - VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR = 1, - VK_SHADER_GROUP_SHADER_ANY_HIT_KHR = 2, - VK_SHADER_GROUP_SHADER_INTERSECTION_KHR = 3, - VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR = 2147483647, -) - -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end - -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end - -struct VkRayTracingPipelineCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCreateFlags - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - groupCount::UInt32 - pGroups::Ptr{VkRayTracingShaderGroupCreateInfoKHR} - maxPipelineRayRecursionDepth::UInt32 - pLibraryInfo::Ptr{VkPipelineLibraryCreateInfoKHR} - pLibraryInterface::Ptr{VkRayTracingPipelineInterfaceCreateInfoKHR} - pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} - layout::VkPipelineLayout - basePipelineHandle::VkPipeline - basePipelineIndex::Int32 -end - -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end - -struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRayRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - shaderGroupHandleCaptureReplaySize::UInt32 - maxRayDispatchInvocationCount::UInt32 - shaderGroupHandleAlignment::UInt32 - maxRayHitAttributeSize::UInt32 -end - -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end - -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end - -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} - -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end - -const ANativeWindow = Cvoid -const VkAndroidSurfaceCreateFlagsKHR = VkFlags - -struct VkAndroidSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkAndroidSurfaceCreateFlagsKHR - window::Ptr{ANativeWindow} -end - -const PFN_vkCreateAndroidSurfaceKHR = Ptr{Cvoid} -const AHardwareBuffer = Cvoid - -struct VkAndroidHardwareBufferUsageANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - androidHardwareBufferUsage::UInt64 -end - -struct VkAndroidHardwareBufferPropertiesANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - allocationSize::VkDeviceSize - memoryTypeBits::UInt32 -end - -struct VkAndroidHardwareBufferFormatPropertiesANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - externalFormat::UInt64 - formatFeatures::VkFormatFeatureFlags - samplerYcbcrConversionComponents::VkComponentMapping - suggestedYcbcrModel::VkSamplerYcbcrModelConversion - suggestedYcbcrRange::VkSamplerYcbcrRange - suggestedXChromaOffset::VkChromaLocation - suggestedYChromaOffset::VkChromaLocation -end - -struct VkImportAndroidHardwareBufferInfoANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::Ptr{AHardwareBuffer} -end - -struct VkMemoryGetAndroidHardwareBufferInfoANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory -end - -struct VkExternalFormatANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - externalFormat::UInt64 -end - -const PFN_vkGetAndroidHardwareBufferPropertiesANDROID = Ptr{Cvoid} -const PFN_vkGetMemoryAndroidHardwareBufferANDROID = Ptr{Cvoid} -const VkImagePipeSurfaceCreateFlagsFUCHSIA = VkFlags - -struct VkImagePipeSurfaceCreateInfoFUCHSIA - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkImagePipeSurfaceCreateFlagsFUCHSIA - imagePipeHandle::Cint -end - -const PFN_vkCreateImagePipeSurfaceFUCHSIA = Ptr{Cvoid} - -struct VkImportMemoryZirconHandleInfoFUCHSIA - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - handle::Cint -end - -struct VkMemoryZirconHandlePropertiesFUCHSIA - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 -end - -struct VkMemoryGetZirconHandleInfoFUCHSIA - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits -end - -const PFN_vkGetMemoryZirconHandleFUCHSIA = Ptr{Cvoid} -const PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA = Ptr{Cvoid} - -struct VkImportSemaphoreZirconHandleInfoFUCHSIA - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - zirconHandle::Cint -end - -struct VkSemaphoreGetZirconHandleInfoFUCHSIA - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits -end - -const PFN_vkImportSemaphoreZirconHandleFUCHSIA = Ptr{Cvoid} -const PFN_vkGetSemaphoreZirconHandleFUCHSIA = Ptr{Cvoid} -const VkIOSSurfaceCreateFlagsMVK = VkFlags - -struct VkIOSSurfaceCreateInfoMVK - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkIOSSurfaceCreateFlagsMVK - pView::Ptr{Cvoid} -end - -const PFN_vkCreateIOSSurfaceMVK = Ptr{Cvoid} -const VkMacOSSurfaceCreateFlagsMVK = VkFlags - -struct VkMacOSSurfaceCreateInfoMVK - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkMacOSSurfaceCreateFlagsMVK - pView::Ptr{Cvoid} -end - -const PFN_vkCreateMacOSSurfaceMVK = Ptr{Cvoid} -const CAMetalLayer = Cvoid -const VkMetalSurfaceCreateFlagsEXT = VkFlags - -struct VkMetalSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkMetalSurfaceCreateFlagsEXT - pLayer::Ptr{CAMetalLayer} -end - -const PFN_vkCreateMetalSurfaceEXT = Ptr{Cvoid} -const VkViSurfaceCreateFlagsNN = VkFlags - -struct VkViSurfaceCreateInfoNN - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkViSurfaceCreateFlagsNN - window::Ptr{Cvoid} -end - -const PFN_vkCreateViSurfaceNN = Ptr{Cvoid} -const VkWaylandSurfaceCreateFlagsKHR = VkFlags - -struct VkWaylandSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWaylandSurfaceCreateFlagsKHR - display::Ptr{wl_display} - surface::Ptr{wl_surface} -end - -const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} -const VkWin32SurfaceCreateFlagsKHR = VkFlags - -struct VkWin32SurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWin32SurfaceCreateFlagsKHR - hinstance::Cint - hwnd::Cint -end - -const PFN_vkCreateWin32SurfaceKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = Ptr{Cvoid} - -struct VkImportMemoryWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - handle::Cint - name::Cint -end - -struct VkExportMemoryWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{Cint} - dwAccess::Cint - name::Cint -end - -struct VkMemoryWin32HandlePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 -end - -struct VkMemoryGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits -end - -const PFN_vkGetMemoryWin32HandleKHR = Ptr{Cvoid} -const PFN_vkGetMemoryWin32HandlePropertiesKHR = Ptr{Cvoid} - -struct VkWin32KeyedMutexAcquireReleaseInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - acquireCount::UInt32 - pAcquireSyncs::Ptr{VkDeviceMemory} - pAcquireKeys::Ptr{UInt64} - pAcquireTimeouts::Ptr{UInt32} - releaseCount::UInt32 - pReleaseSyncs::Ptr{VkDeviceMemory} - pReleaseKeys::Ptr{UInt64} -end - -struct VkImportSemaphoreWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - handle::Cint - name::Cint -end - -struct VkExportSemaphoreWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{Cint} - dwAccess::Cint - name::Cint -end - -struct VkD3D12FenceSubmitInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreValuesCount::UInt32 - pWaitSemaphoreValues::Ptr{UInt64} - signalSemaphoreValuesCount::UInt32 - pSignalSemaphoreValues::Ptr{UInt64} -end - -struct VkSemaphoreGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits -end - -const PFN_vkImportSemaphoreWin32HandleKHR = Ptr{Cvoid} -const PFN_vkGetSemaphoreWin32HandleKHR = Ptr{Cvoid} - -struct VkImportFenceWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - handle::Cint - name::Cint -end - -struct VkExportFenceWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{Cint} - dwAccess::Cint - name::Cint -end - -struct VkFenceGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits -end - -const PFN_vkImportFenceWin32HandleKHR = Ptr{Cvoid} -const PFN_vkGetFenceWin32HandleKHR = Ptr{Cvoid} - -struct VkImportMemoryWin32HandleInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagsNV - handle::Cint -end - -struct VkExportMemoryWin32HandleInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{Cint} - dwAccess::Cint -end - -const PFN_vkGetMemoryWin32HandleNV = Ptr{Cvoid} - -struct VkWin32KeyedMutexAcquireReleaseInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - acquireCount::UInt32 - pAcquireSyncs::Ptr{VkDeviceMemory} - pAcquireKeys::Ptr{UInt64} - pAcquireTimeoutMilliseconds::Ptr{UInt32} - releaseCount::UInt32 - pReleaseSyncs::Ptr{VkDeviceMemory} - pReleaseKeys::Ptr{UInt64} -end - -@cenum(VkFullScreenExclusiveEXT, - VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0, - VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1, - VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2, - VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3, - VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 2147483647, -) - -struct VkSurfaceFullScreenExclusiveInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fullScreenExclusive::VkFullScreenExclusiveEXT -end - -struct VkSurfaceCapabilitiesFullScreenExclusiveEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fullScreenExclusiveSupported::VkBool32 -end - -struct VkSurfaceFullScreenExclusiveWin32InfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - hmonitor::Cint -end - -const PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = Ptr{Cvoid} -const PFN_vkAcquireFullScreenExclusiveModeEXT = Ptr{Cvoid} -const PFN_vkReleaseFullScreenExclusiveModeEXT = Ptr{Cvoid} -const PFN_vkGetDeviceGroupSurfacePresentModes2EXT = Ptr{Cvoid} -const VkXcbSurfaceCreateFlagsKHR = VkFlags - -struct VkXcbSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXcbSurfaceCreateFlagsKHR - connection::Ptr{xcb_connection_t} - window::xcb_window_t -end - -const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} -const VkXlibSurfaceCreateFlagsKHR = VkFlags - -struct VkXlibSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXlibSurfaceCreateFlagsKHR - dpy::Ptr{Display} - window::Window -end - -const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} -const VkDirectFBSurfaceCreateFlagsEXT = VkFlags - -struct VkDirectFBSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDirectFBSurfaceCreateFlagsEXT - dfb::Ptr{Cint} - surface::Ptr{Cint} -end - -const PFN_vkCreateDirectFBSurfaceEXT = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT = Ptr{Cvoid} -const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} -const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} -const VkStreamDescriptorSurfaceCreateFlagsGGP = VkFlags - -struct VkStreamDescriptorSurfaceCreateInfoGGP - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkStreamDescriptorSurfaceCreateFlagsGGP - streamDescriptor::Cint -end - -const PFN_vkCreateStreamDescriptorSurfaceGGP = Ptr{Cvoid} - -struct VkPresentFrameTokenGGP - sType::VkStructureType - pNext::Ptr{Cvoid} - frameToken::Cint -end - -const VkScreenSurfaceCreateFlagsQNX = VkFlags - -struct VkScreenSurfaceCreateInfoQNX - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkScreenSurfaceCreateFlagsQNX - context::Ptr{_screen_context} - window::Ptr{_screen_window} -end - -const PFN_vkCreateScreenSurfaceQNX = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX = Ptr{Cvoid} -const VkVideoSessionKHR_T = Cvoid -const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} -const VkVideoSessionParametersKHR_T = Cvoid -const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} - -@cenum(VkQueryResultStatusKHR{Int32}, - VK_QUERY_RESULT_STATUS_ERROR_KHR = -1, - VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0, - VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1, - VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkVideoCodecOperationFlagBitsKHR, - VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR = 0, - VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 65536, - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT = 1, - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 2, - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkVideoCodecOperationFlagsKHR = VkFlags - -@cenum(VkVideoChromaSubsamplingFlagBitsKHR, - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR = 0, - VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 1, - VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 2, - VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 4, - VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 8, - VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkVideoChromaSubsamplingFlagsKHR = VkFlags - -@cenum(VkVideoComponentBitDepthFlagBitsKHR, - VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0, - VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 1, - VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 4, - VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 16, - VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkVideoComponentBitDepthFlagsKHR = VkFlags - -@cenum(VkVideoCapabilitiesFlagBitsKHR, - VK_VIDEO_CAPABILITIES_PROTECTED_CONTENT_BIT_KHR = 1, - VK_VIDEO_CAPABILITIES_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2, - VK_VIDEO_CAPABILITIES_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkVideoCapabilitiesFlagsKHR = VkFlags - -@cenum(VkVideoSessionCreateFlagBitsKHR, - VK_VIDEO_SESSION_CREATE_DEFAULT_KHR = 0, - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1, - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkVideoSessionCreateFlagsKHR = VkFlags -const VkVideoBeginCodingFlagsKHR = VkFlags -const VkVideoEndCodingFlagsKHR = VkFlags - -@cenum(VkVideoCodingControlFlagBitsKHR, - VK_VIDEO_CODING_CONTROL_DEFAULT_KHR = 0, - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1, - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkVideoCodingControlFlagsKHR = VkFlags - -@cenum(VkVideoCodingQualityPresetFlagBitsKHR, - VK_VIDEO_CODING_QUALITY_PRESET_DEFAULT_BIT_KHR = 0, - VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR = 1, - VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR = 2, - VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR = 4, - VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkVideoCodingQualityPresetFlagsKHR = VkFlags - -struct VkVideoQueueFamilyProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR -end - -struct VkVideoProfileKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR -end - -struct VkVideoProfilesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileKHR} -end - -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - capabilityFlags::VkVideoCapabilitiesFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - videoPictureExtentGranularity::VkExtent2D - minExtent::VkExtent2D - maxExtent::VkExtent2D - maxReferencePicturesSlotsCount::UInt32 - maxReferencePicturesActiveCount::UInt32 -end - -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags - pVideoProfiles::Ptr{VkVideoProfilesKHR} -end - -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat -end - -struct VkVideoPictureResourceKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView -end - -struct VkVideoReferenceSlotKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int8 - pPictureResource::Ptr{VkVideoPictureResourceKHR} -end - -struct VkVideoGetMemoryPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - pMemoryRequirements::Ptr{VkMemoryRequirements2} -end - -struct VkVideoBindMemoryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize -end - -struct VkVideoSessionCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePicturesFormat::VkFormat - maxReferencePicturesSlotsCount::UInt32 - maxReferencePicturesActiveCount::UInt32 -end - -struct VkVideoSessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR -end - -struct VkVideoSessionParametersUpdateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 -end - -struct VkVideoBeginCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - codecQualityPreset::VkVideoCodingQualityPresetFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotKHR} -end - -struct VkVideoEndCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR -end - -struct VkVideoCodingControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR -end - -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} -const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} -const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} -const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} -const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} - -@cenum(VkVideoDecodeFlagBitsKHR, - VK_VIDEO_DECODE_DEFAULT_KHR = 0, - VK_VIDEO_DECODE_RESERVED_0_BIT_KHR = 1, - VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkVideoDecodeFlagsKHR = VkFlags - -struct VkVideoDecodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - codedOffset::VkOffset2D - codedExtent::VkExtent2D - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotKHR} -end - -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} - -struct VkPhysicalDevicePortabilitySubsetFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - constantAlphaColorBlendFactors::VkBool32 - events::VkBool32 - imageViewFormatReinterpretation::VkBool32 - imageViewFormatSwizzle::VkBool32 - imageView2DOn3DImage::VkBool32 - multisampleArrayImage::VkBool32 - mutableComparisonSamplers::VkBool32 - pointPolygons::VkBool32 - samplerMipLodBias::VkBool32 - separateStencilMaskRef::VkBool32 - shaderSampleRateInterpolationFunctions::VkBool32 - tessellationIsolines::VkBool32 - tessellationPointMode::VkBool32 - triangleFans::VkBool32 - vertexAttributeAccessBeyondStride::VkBool32 -end - -struct VkPhysicalDevicePortabilitySubsetPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - minVertexInputBindingStrideAlignment::UInt32 -end - -@cenum(VkVideoEncodeFlagBitsKHR, - VK_VIDEO_ENCODE_DEFAULT_KHR = 0, - VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR = 1, - VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkVideoEncodeFlagsKHR = VkFlags - -@cenum(VkVideoEncodeRateControlFlagBitsKHR, - VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR = 0, - VK_VIDEO_ENCODE_RATE_CONTROL_RESET_BIT_KHR = 1, - VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkVideoEncodeRateControlFlagsKHR = VkFlags - -@cenum(VkVideoEncodeRateControlModeFlagBitsKHR, - VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0, - VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1, - VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2, - VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkVideoEncodeRateControlModeFlagsKHR = VkFlags - -struct VkVideoEncodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEncodeFlagsKHR - qualityLevel::UInt32 - codedExtent::VkExtent2D - dstBitstreamBuffer::VkBuffer - dstBitstreamBufferOffset::VkDeviceSize - dstBitstreamBufferMaxRange::VkDeviceSize - srcPictureResource::VkVideoPictureResourceKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotKHR} -end - -struct VkVideoEncodeRateControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEncodeRateControlFlagsKHR - rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR - averageBitrate::UInt32 - peakToAverageBitrateRatio::UInt16 - frameRateNumerator::UInt16 - frameRateDenominator::UInt16 - virtualBufferSizeInMs::UInt32 -end - -const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} - -@cenum(StdVideoH264ChromaFormatIdc, - std_video_h264_chroma_format_idc_monochrome = 0, - std_video_h264_chroma_format_idc_420 = 1, - std_video_h264_chroma_format_idc_422 = 2, - std_video_h264_chroma_format_idc_444 = 3, -) -@cenum(StdVideoH264ProfileIdc, - std_video_h264_profile_idc_baseline = 66, - std_video_h264_profile_idc_main = 77, - std_video_h264_profile_idc_high = 100, - std_video_h264_profile_idc_high_444_predictive = 244, - std_video_h264_profile_idc_invalid = 2147483647, -) -@cenum(StdVideoH264Level, - std_video_h264_level_1_0 = 0, - std_video_h264_level_1_1 = 1, - std_video_h264_level_1_2 = 2, - std_video_h264_level_1_3 = 3, - std_video_h264_level_2_0 = 4, - std_video_h264_level_2_1 = 5, - std_video_h264_level_2_2 = 6, - std_video_h264_level_3_0 = 7, - std_video_h264_level_3_1 = 8, - std_video_h264_level_3_2 = 9, - std_video_h264_level_4_0 = 10, - std_video_h264_level_4_1 = 11, - std_video_h264_level_4_2 = 12, - std_video_h264_level_5_0 = 13, - std_video_h264_level_5_1 = 14, - std_video_h264_level_5_2 = 15, - std_video_h264_level_6_0 = 16, - std_video_h264_level_6_1 = 17, - std_video_h264_level_6_2 = 18, - std_video_h264_level_invalid = 2147483647, -) -@cenum(StdVideoH264PocType, - std_video_h264_poc_type_0 = 0, - std_video_h264_poc_type_1 = 1, - std_video_h264_poc_type_2 = 2, - std_video_h264_poc_type_invalid = 2147483647, -) -@cenum(StdVideoH264AspectRatioIdc, - std_video_h264_aspect_ratio_idc_unspecified = 0, - std_video_h264_aspect_ratio_idc_square = 1, - std_video_h264_aspect_ratio_idc_12_11 = 2, - std_video_h264_aspect_ratio_idc_10_11 = 3, - std_video_h264_aspect_ratio_idc_16_11 = 4, - std_video_h264_aspect_ratio_idc_40_33 = 5, - std_video_h264_aspect_ratio_idc_24_11 = 6, - std_video_h264_aspect_ratio_idc_20_11 = 7, - std_video_h264_aspect_ratio_idc_32_11 = 8, - std_video_h264_aspect_ratio_idc_80_33 = 9, - std_video_h264_aspect_ratio_idc_18_11 = 10, - std_video_h264_aspect_ratio_idc_15_11 = 11, - std_video_h264_aspect_ratio_idc_64_33 = 12, - std_video_h264_aspect_ratio_idc_160_99 = 13, - std_video_h264_aspect_ratio_idc_4_3 = 14, - std_video_h264_aspect_ratio_idc_3_2 = 15, - std_video_h264_aspect_ratio_idc_2_1 = 16, - std_video_h264_aspect_ratio_idc_extended_sar = 255, - std_video_h264_aspect_ratio_idc_invalid = 2147483647, -) -@cenum(StdVideoH264WeightedBiPredIdc, - std_video_h264_default_weighted_b_slices_prediction_idc = 0, - std_video_h264_explicit_weighted_b_slices_prediction_idc = 1, - std_video_h264_implicit_weighted_b_slices_prediction_idc = 2, - std_video_h264_invalid_weighted_b_slices_prediction_idc = 2147483647, -) -@cenum(StdVideoH264ModificationOfPicNumsIdc, - std_video_h264_modification_of_pic_nums_idc_short_term_subtract = 0, - std_video_h264_modification_of_pic_nums_idc_short_term_add = 1, - std_video_h264_modification_of_pic_nums_idc_long_term = 2, - std_video_h264_modification_of_pic_nums_idc_end = 3, - std_video_h264_modification_of_pic_nums_idc_invalid = 2147483647, -) -@cenum(StdVideoH264MemMgmtControlOp, - std_video_h264_mem_mgmt_control_op_end = 0, - std_video_h264_mem_mgmt_control_op_unmark_short_term = 1, - std_video_h264_mem_mgmt_control_op_unmark_long_term = 2, - std_video_h264_mem_mgmt_control_op_mark_long_term = 3, - std_video_h264_mem_mgmt_control_op_set_max_long_term_index = 4, - std_video_h264_mem_mgmt_control_op_unmark_all = 5, - std_video_h264_mem_mgmt_control_op_mark_current_as_long_term = 6, - std_video_h264_mem_mgmt_control_op_invalid = 2147483647, -) -@cenum(StdVideoH264CabacInitIdc, - std_video_h264_cabac_init_idc_0 = 0, - std_video_h264_cabac_init_idc_1 = 1, - std_video_h264_cabac_init_idc_2 = 2, - std_video_h264_cabac_init_idc_invalid = 2147483647, -) -@cenum(StdVideoH264DisableDeblockingFilterIdc, - std_video_h264_disable_deblocking_filter_idc_disabled = 0, - std_video_h264_disable_deblocking_filter_idc_enabled = 1, - std_video_h264_disable_deblocking_filter_idc_partial = 2, - std_video_h264_disable_deblocking_filter_idc_invalid = 2147483647, -) -@cenum(StdVideoH264PictureType, - std_video_h264_picture_type_i = 0, - std_video_h264_picture_type_p = 1, - std_video_h264_picture_type_b = 2, - std_video_h264_picture_type_invalid = 2147483647, -) -@cenum(StdVideoH264SliceType, - std_video_h264_slice_type_i = 0, - std_video_h264_slice_type_p = 1, - std_video_h264_slice_type_b = 2, - std_video_h264_slice_type_invalid = 2147483647, -) -@cenum(StdVideoH264NonVclNaluType, - std_video_h264_non_vcl_nalu_type_sps = 0, - std_video_h264_non_vcl_nalu_type_pps = 1, - std_video_h264_non_vcl_nalu_type_aud = 2, - std_video_h264_non_vcl_nalu_type_prefix = 3, - std_video_h264_non_vcl_nalu_type_end_of_sequence = 4, - std_video_h264_non_vcl_nalu_type_end_of_stream = 5, - std_video_h264_non_vcl_nalu_type_precoded = 6, - std_video_h264_non_vcl_nalu_type_invalid = 2147483647, -) - -struct StdVideoH264SpsVuiFlags - aspect_ratio_info_present_flag::UInt32 - overscan_info_present_flag::UInt32 - overscan_appropriate_flag::UInt32 - video_signal_type_present_flag::UInt32 - video_full_range_flag::UInt32 - color_description_present_flag::UInt32 - chroma_loc_info_present_flag::UInt32 - timing_info_present_flag::UInt32 - fixed_frame_rate_flag::UInt32 - bitstream_restriction_flag::UInt32 - nal_hrd_parameters_present_flag::UInt32 - vcl_hrd_parameters_present_flag::UInt32 -end - -struct StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - bit_rate_value_minus1::NTuple{32, UInt32} - cpb_size_value_minus1::NTuple{32, UInt32} - cbr_flag::NTuple{32, UInt8} - initial_cpb_removal_delay_length_minus1::UInt32 - cpb_removal_delay_length_minus1::UInt32 - dpb_output_delay_length_minus1::UInt32 - time_offset_length::UInt32 -end - -struct StdVideoH264SequenceParameterSetVui - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - color_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - hrd_parameters::StdVideoH264HrdParameters - num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - flags::StdVideoH264SpsVuiFlags -end - -struct StdVideoH264SpsFlags - constraint_set0_flag::UInt32 - constraint_set1_flag::UInt32 - constraint_set2_flag::UInt32 - constraint_set3_flag::UInt32 - constraint_set4_flag::UInt32 - constraint_set5_flag::UInt32 - direct_8x8_inference_flag::UInt32 - mb_adaptive_frame_field_flag::UInt32 - frame_mbs_only_flag::UInt32 - delta_pic_order_always_zero_flag::UInt32 - residual_colour_transform_flag::UInt32 - gaps_in_frame_num_value_allowed_flag::UInt32 - first_picture_after_seek_flag::UInt32 - qpprime_y_zero_transform_bypass_flag::UInt32 - frame_cropping_flag::UInt32 - scaling_matrix_present_flag::UInt32 - vui_parameters_present_flag::UInt32 -end - -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt8 - use_default_scaling_matrix_mask::UInt8 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{2, NTuple{64, UInt8}} -end - -struct StdVideoH264SequenceParameterSet - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264Level - seq_parameter_set_id::UInt8 - chroma_format_idc::StdVideoH264ChromaFormatIdc - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - log2_max_pic_order_cnt_lsb_minus4::UInt8 - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - pic_width_in_mbs_minus1::UInt32 - pic_height_in_map_units_minus1::UInt32 - frame_crop_left_offset::UInt32 - frame_crop_right_offset::UInt32 - frame_crop_top_offset::UInt32 - frame_crop_bottom_offset::UInt32 - flags::StdVideoH264SpsFlags - offset_for_ref_frame::NTuple{255, Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} -end - -struct StdVideoH264PpsFlags - transform_8x8_mode_flag::UInt32 - redundant_pic_cnt_present_flag::UInt32 - constrained_intra_pred_flag::UInt32 - deblocking_filter_control_present_flag::UInt32 - weighted_bipred_idc_flag::UInt32 - weighted_pred_flag::UInt32 - pic_order_present_flag::UInt32 - entropy_coding_mode_flag::UInt32 - scaling_matrix_present_flag::UInt32 -end - -struct StdVideoH264PictureParameterSet - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - num_ref_idx_l0_default_active_minus1::UInt8 - num_ref_idx_l1_default_active_minus1::UInt8 - weighted_bipred_idc::StdVideoH264WeightedBiPredIdc - pic_init_qp_minus26::Int8 - pic_init_qs_minus26::Int8 - chroma_qp_index_offset::Int8 - second_chroma_qp_index_offset::Int8 - flags::StdVideoH264PpsFlags - pScalingLists::Ptr{StdVideoH264ScalingLists} -end - -struct StdVideoEncodeH264SliceHeaderFlags - idr_flag::UInt32 - is_reference_flag::UInt32 - num_ref_idx_active_override_flag::UInt32 - no_output_of_prior_pics_flag::UInt32 - long_term_reference_flag::UInt32 - adaptive_ref_pic_marking_mode_flag::UInt32 - no_prior_references_available_flag::UInt32 -end - -struct StdVideoEncodeH264PictureInfoFlags - idr_flag::UInt32 - is_reference_flag::UInt32 - long_term_reference_flag::UInt32 -end - -struct StdVideoEncodeH264RefMgmtFlags - ref_pic_list_modification_l0_flag::UInt32 - ref_pic_list_modification_l1_flag::UInt32 -end - -struct StdVideoEncodeH264RefListModEntry - modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc - abs_diff_pic_num_minus1::UInt16 - long_term_pic_num::UInt16 -end - -struct StdVideoEncodeH264RefPicMarkingEntry - operation::StdVideoH264MemMgmtControlOp - difference_of_pic_nums_minus1::UInt16 - long_term_pic_num::UInt16 - long_term_frame_idx::UInt16 - max_long_term_frame_idx_plus1::UInt16 -end - -struct StdVideoEncodeH264RefMemMgmtCtrlOperations - flags::StdVideoEncodeH264RefMgmtFlags - refList0ModOpCount::UInt8 - pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry} - refList1ModOpCount::UInt8 - pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry} - refPicMarkingOpCount::UInt8 - pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry} -end - -struct StdVideoEncodeH264PictureInfo - flags::StdVideoEncodeH264PictureInfoFlags - pictureType::StdVideoH264PictureType - frameNum::UInt32 - pictureOrderCount::UInt32 - long_term_pic_num::UInt16 - long_term_frame_idx::UInt16 -end - -struct StdVideoEncodeH264SliceHeader - flags::StdVideoEncodeH264SliceHeaderFlags - slice_type::StdVideoH264SliceType - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - idr_pic_id::UInt16 - num_ref_idx_l0_active_minus1::UInt8 - num_ref_idx_l1_active_minus1::UInt8 - cabac_init_idc::StdVideoH264CabacInitIdc - disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc - slice_alpha_c0_offset_div2::Int8 - slice_beta_offset_div2::Int8 - pMemMgmtCtrlOperations::Ptr{StdVideoEncodeH264RefMemMgmtCtrlOperations} -end - -@cenum(VkVideoEncodeH264CapabilitiesFlagBitsEXT, - VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 1, - VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 2, - VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT = 4, - VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 8, - VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 16, - VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 32, - VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 64, - VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 128, - VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 256, - VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 512, - VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT = 1024, - VK_VIDEO_ENCODE_H264_CAPABILITIES_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) - -const VkVideoEncodeH264CapabilitiesFlagsEXT = VkFlags - -@cenum(VkVideoEncodeH264InputModeFlagBitsEXT, - VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 1, - VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 2, - VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 4, - VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) - -const VkVideoEncodeH264InputModeFlagsEXT = VkFlags - -@cenum(VkVideoEncodeH264OutputModeFlagBitsEXT, - VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 1, - VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 2, - VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 4, - VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) - -const VkVideoEncodeH264OutputModeFlagsEXT = VkFlags - -@cenum(VkVideoEncodeH264CreateFlagBitsEXT, - VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT = 0, - VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT = 1, - VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) - -const VkVideoEncodeH264CreateFlagsEXT = VkFlags - -struct VkVideoEncodeH264CapabilitiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEncodeH264CapabilitiesFlagsEXT - inputModeFlags::VkVideoEncodeH264InputModeFlagsEXT - outputModeFlags::VkVideoEncodeH264OutputModeFlagsEXT - minPictureSizeInMbs::VkExtent2D - maxPictureSizeInMbs::VkExtent2D - inputImageDataAlignment::VkExtent2D - maxNumL0ReferenceForP::UInt8 - maxNumL0ReferenceForB::UInt8 - maxNumL1Reference::UInt8 - qualityLevelCount::UInt8 - stdExtensionVersion::VkExtensionProperties -end - -struct VkVideoEncodeH264SessionCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEncodeH264CreateFlagsEXT - maxPictureSizeInMbs::VkExtent2D - pStdExtensionVersion::Ptr{VkExtensionProperties} -end - -struct VkVideoEncodeH264SessionParametersAddInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - spsStdCount::UInt32 - pSpsStd::Ptr{StdVideoH264SequenceParameterSet} - ppsStdCount::UInt32 - pPpsStd::Ptr{StdVideoH264PictureParameterSet} -end - -struct VkVideoEncodeH264SessionParametersCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSpsStdCount::UInt32 - maxPpsStdCount::UInt32 - pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoEXT} -end - -struct VkVideoEncodeH264DpbSlotInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int8 - pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} -end - -struct VkVideoEncodeH264NaluSliceEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSliceHeaderStd::Ptr{StdVideoEncodeH264SliceHeader} - mbCount::UInt32 - refFinalList0EntryCount::UInt8 - pRefFinalList0Entries::Ptr{VkVideoEncodeH264DpbSlotInfoEXT} - refFinalList1EntryCount::UInt8 - pRefFinalList1Entries::Ptr{VkVideoEncodeH264DpbSlotInfoEXT} - precedingNaluBytes::UInt32 - minQp::UInt8 - maxQp::UInt8 -end - -struct VkVideoEncodeH264VclFrameInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - refDefaultFinalList0EntryCount::UInt8 - pRefDefaultFinalList0Entries::Ptr{VkVideoEncodeH264DpbSlotInfoEXT} - refDefaultFinalList1EntryCount::UInt8 - pRefDefaultFinalList1Entries::Ptr{VkVideoEncodeH264DpbSlotInfoEXT} - naluSliceEntryCount::UInt32 - pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceEXT} - pCurrentPictureInfo::Ptr{VkVideoEncodeH264DpbSlotInfoEXT} -end - -struct VkVideoEncodeH264EmitPictureParametersEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - spsId::UInt8 - emitSpsEnable::VkBool32 - ppsIdEntryCount::UInt32 - ppsIdEntries::Ptr{UInt8} -end - -struct VkVideoEncodeH264ProfileEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc -end - -struct StdVideoDecodeH264PictureInfoFlags - field_pic_flag::UInt32 - is_intra::UInt32 - bottom_field_flag::UInt32 - is_reference::UInt32 - complementary_field_pair::UInt32 -end - -struct StdVideoDecodeH264PictureInfo - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved::UInt16 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} - flags::StdVideoDecodeH264PictureInfoFlags -end - -struct StdVideoDecodeH264ReferenceInfoFlags - top_field_flag::UInt32 - bottom_field_flag::UInt32 - is_long_term::UInt32 - is_non_existing::UInt32 -end - -struct StdVideoDecodeH264ReferenceInfo - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} - flags::StdVideoDecodeH264ReferenceInfoFlags -end - -struct StdVideoDecodeH264MvcElementFlags - non_idr::UInt32 - anchor_pic::UInt32 - inter_view::UInt32 -end - -struct StdVideoDecodeH264MvcElement - flags::StdVideoDecodeH264MvcElementFlags - viewOrderIndex::UInt16 - viewId::UInt16 - temporalId::UInt16 - priorityId::UInt16 - numOfAnchorRefsInL0::UInt16 - viewIdOfAnchorRefsInL0::NTuple{15, UInt16} - numOfAnchorRefsInL1::UInt16 - viewIdOfAnchorRefsInL1::NTuple{15, UInt16} - numOfNonAnchorRefsInL0::UInt16 - viewIdOfNonAnchorRefsInL0::NTuple{15, UInt16} - numOfNonAnchorRefsInL1::UInt16 - viewIdOfNonAnchorRefsInL1::NTuple{15, UInt16} -end - -struct StdVideoDecodeH264Mvc - viewId0::UInt32 - mvcElementCount::UInt32 - pMvcElements::Ptr{StdVideoDecodeH264MvcElement} -end - -@cenum(VkVideoDecodeH264FieldLayoutFlagBitsEXT, - VK_VIDEO_DECODE_H264_PROGRESSIVE_PICTURES_ONLY_EXT = 0, - VK_VIDEO_DECODE_H264_FIELD_LAYOUT_LINE_INTERLACED_PLANE_BIT_EXT = 1, - VK_VIDEO_DECODE_H264_FIELD_LAYOUT_SEPARATE_INTERLACED_PLANE_BIT_EXT = 2, - VK_VIDEO_DECODE_H264_FIELD_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) - -const VkVideoDecodeH264FieldLayoutFlagsEXT = VkFlags -const VkVideoDecodeH264CreateFlagsEXT = VkFlags - -struct VkVideoDecodeH264ProfileEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - fieldLayout::VkVideoDecodeH264FieldLayoutFlagsEXT -end - -struct VkVideoDecodeH264CapabilitiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevel::UInt32 - fieldOffsetGranularity::VkOffset2D - stdExtensionVersion::VkExtensionProperties -end - -struct VkVideoDecodeH264SessionCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeH264CreateFlagsEXT - pStdExtensionVersion::Ptr{VkExtensionProperties} -end - -struct VkVideoDecodeH264SessionParametersAddInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - spsStdCount::UInt32 - pSpsStd::Ptr{StdVideoH264SequenceParameterSet} - ppsStdCount::UInt32 - pPpsStd::Ptr{StdVideoH264PictureParameterSet} -end - -struct VkVideoDecodeH264SessionParametersCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSpsStdCount::UInt32 - maxPpsStdCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoEXT} -end - -struct VkVideoDecodeH264PictureInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - slicesCount::UInt32 - pSlicesDataOffsets::Ptr{UInt32} -end - -struct VkVideoDecodeH264MvcEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdMvc::Ptr{StdVideoDecodeH264Mvc} -end - -struct VkVideoDecodeH264DpbSlotInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} -end - -@cenum(StdVideoH265ChromaFormatIdc, - std_video_h265_chroma_format_idc_monochrome = 0, - std_video_h265_chroma_format_idc_420 = 1, - std_video_h265_chroma_format_idc_422 = 2, - std_video_h265_chroma_format_idc_444 = 3, -) -@cenum(StdVideoH265ProfileIdc, - std_video_h265_profile_idc_main = 1, - std_video_h265_profile_idc_main_10 = 2, - std_video_h265_profile_idc_main_still_picture = 3, - std_video_h265_profile_idc_format_range_extensions = 4, - std_video_h265_profile_idc_scc_extensions = 9, - std_video_h265_profile_idc_invalid = 2147483647, -) -@cenum(StdVideoH265Level, - std_video_h265_level_1_0 = 0, - std_video_h265_level_2_0 = 1, - std_video_h265_level_2_1 = 2, - std_video_h265_level_3_0 = 3, - std_video_h265_level_3_1 = 4, - std_video_h265_level_4_0 = 5, - std_video_h265_level_4_1 = 6, - std_video_h265_level_5_0 = 7, - std_video_h265_level_5_1 = 8, - std_video_h265_level_5_2 = 9, - std_video_h265_level_6_0 = 10, - std_video_h265_level_6_1 = 11, - std_video_h265_level_6_2 = 12, - std_video_h265_level_invalid = 2147483647, -) - -struct StdVideoH265DecPicBufMgr - max_latency_increase_plus1::NTuple{7, UInt32} - max_dec_pic_buffering_minus1::NTuple{7, UInt8} - max_num_reorder_pics::NTuple{7, UInt8} -end - -struct StdVideoH265SubLayerHrdParameters - bit_rate_value_minus1::NTuple{32, UInt32} - cpb_size_value_minus1::NTuple{32, UInt32} - cpb_size_du_value_minus1::NTuple{32, UInt32} - bit_rate_du_value_minus1::NTuple{32, UInt32} - cbr_flag::UInt32 -end - -struct StdVideoH265HrdFlags - nal_hrd_parameters_present_flag::UInt32 - vcl_hrd_parameters_present_flag::UInt32 - sub_pic_hrd_params_present_flag::UInt32 - sub_pic_cpb_params_in_pic_timing_sei_flag::UInt32 - fixed_pic_rate_general_flag::UInt8 - fixed_pic_rate_within_cvs_flag::UInt8 - low_delay_hrd_flag::UInt8 -end - -struct StdVideoH265HrdParameters - tick_divisor_minus2::UInt8 - du_cpb_removal_delay_increment_length_minus1::UInt8 - dpb_output_delay_du_length_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - cpb_size_du_scale::UInt8 - initial_cpb_removal_delay_length_minus1::UInt8 - au_cpb_removal_delay_length_minus1::UInt8 - dpb_output_delay_length_minus1::UInt8 - cpb_cnt_minus1::NTuple{7, UInt8} - elemental_duration_in_tc_minus1::NTuple{7, UInt16} - SubLayerHrdParametersNal::NTuple{7, Ptr{StdVideoH265SubLayerHrdParameters}} - SubLayerHrdParametersVcl::NTuple{7, Ptr{StdVideoH265SubLayerHrdParameters}} - flags::StdVideoH265HrdFlags -end - -struct StdVideoH265VpsFlags - vps_temporal_id_nesting_flag::UInt32 - vps_sub_layer_ordering_info_present_flag::UInt32 - vps_timing_info_present_flag::UInt32 - vps_poc_proportional_to_timing_flag::UInt32 -end - -struct StdVideoH265VideoParameterSet - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - hrd_parameters::Ptr{StdVideoH265HrdParameters} - flags::StdVideoH265VpsFlags -end - -struct StdVideoH265ScalingLists - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} - ScalingList16x16::NTuple{6, NTuple{64, UInt8}} - ScalingList32x32::NTuple{2, NTuple{64, UInt8}} - ScalingListDCCoef16x16::NTuple{6, UInt8} - ScalingListDCCoef32x32::NTuple{2, UInt8} -end - -struct StdVideoH265SpsVuiFlags - aspect_ratio_info_present_flag::UInt32 - overscan_info_present_flag::UInt32 - overscan_appropriate_flag::UInt32 - video_signal_type_present_flag::UInt32 - video_full_range_flag::UInt32 - colour_description_present_flag::UInt32 - chroma_loc_info_present_flag::UInt32 - neutral_chroma_indication_flag::UInt32 - field_seq_flag::UInt32 - frame_field_info_present_flag::UInt32 - default_display_window_flag::UInt32 - vui_timing_info_present_flag::UInt32 - vui_poc_proportional_to_timing_flag::UInt32 - vui_hrd_parameters_present_flag::UInt32 - bitstream_restriction_flag::UInt32 - tiles_fixed_structure_flag::UInt32 - motion_vectors_over_pic_boundaries_flag::UInt32 - restricted_ref_pic_lists_flag::UInt32 -end - -struct StdVideoH265SequenceParameterSetVui - aspect_ratio_idc::UInt8 - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coeffs::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - def_disp_win_left_offset::UInt16 - def_disp_win_right_offset::UInt16 - def_disp_win_top_offset::UInt16 - def_disp_win_bottom_offset::UInt16 - vui_num_units_in_tick::UInt32 - vui_time_scale::UInt32 - vui_num_ticks_poc_diff_one_minus1::UInt32 - hrd_parameters::Ptr{StdVideoH265HrdParameters} - min_spatial_segmentation_idc::UInt16 - max_bytes_per_pic_denom::UInt8 - max_bits_per_min_cu_denom::UInt8 - log2_max_mv_length_horizontal::UInt8 - log2_max_mv_length_vertical::UInt8 - flags::StdVideoH265SpsVuiFlags -end - -struct StdVideoH265PredictorPaletteEntries - PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} -end - -struct StdVideoH265SpsFlags - sps_temporal_id_nesting_flag::UInt32 - separate_colour_plane_flag::UInt32 - scaling_list_enabled_flag::UInt32 - sps_scaling_list_data_present_flag::UInt32 - amp_enabled_flag::UInt32 - sample_adaptive_offset_enabled_flag::UInt32 - pcm_enabled_flag::UInt32 - pcm_loop_filter_disabled_flag::UInt32 - long_term_ref_pics_present_flag::UInt32 - sps_temporal_mvp_enabled_flag::UInt32 - strong_intra_smoothing_enabled_flag::UInt32 - vui_parameters_present_flag::UInt32 - sps_extension_present_flag::UInt32 - sps_range_extension_flag::UInt32 - transform_skip_rotation_enabled_flag::UInt32 - transform_skip_context_enabled_flag::UInt32 - implicit_rdpcm_enabled_flag::UInt32 - explicit_rdpcm_enabled_flag::UInt32 - extended_precision_processing_flag::UInt32 - intra_smoothing_disabled_flag::UInt32 - high_precision_offsets_enabled_flag::UInt32 - persistent_rice_adaptation_enabled_flag::UInt32 - cabac_bypass_alignment_enabled_flag::UInt32 - sps_curr_pic_ref_enabled_flag::UInt32 - palette_mode_enabled_flag::UInt32 - sps_palette_predictor_initializer_present_flag::UInt32 - intra_boundary_filtering_disabled_flag::UInt32 -end - -struct StdVideoH265SequenceParameterSet - profile_idc::StdVideoH265ProfileIdc - level_idc::StdVideoH265Level - pic_width_in_luma_samples::UInt32 - pic_height_in_luma_samples::UInt32 - sps_video_parameter_set_id::UInt8 - sps_max_sub_layers_minus1::UInt8 - sps_seq_parameter_set_id::UInt8 - chroma_format_idc::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - sps_max_dec_pic_buffering_minus1::UInt8 - log2_min_luma_coding_block_size_minus3::UInt8 - log2_diff_max_min_luma_coding_block_size::UInt8 - log2_min_luma_transform_block_size_minus2::UInt8 - log2_diff_max_min_luma_transform_block_size::UInt8 - max_transform_hierarchy_depth_inter::UInt8 - max_transform_hierarchy_depth_intra::UInt8 - num_short_term_ref_pic_sets::UInt8 - num_long_term_ref_pics_sps::UInt8 - pcm_sample_bit_depth_luma_minus1::UInt8 - pcm_sample_bit_depth_chroma_minus1::UInt8 - log2_min_pcm_luma_coding_block_size_minus3::UInt8 - log2_diff_max_min_pcm_luma_coding_block_size::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - flags::StdVideoH265SpsFlags - pScalingLists::Ptr{StdVideoH265ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializer_minus1::UInt8 - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end - -struct StdVideoH265PpsFlags - dependent_slice_segments_enabled_flag::UInt32 - output_flag_present_flag::UInt32 - sign_data_hiding_enabled_flag::UInt32 - cabac_init_present_flag::UInt32 - constrained_intra_pred_flag::UInt32 - transform_skip_enabled_flag::UInt32 - cu_qp_delta_enabled_flag::UInt32 - pps_slice_chroma_qp_offsets_present_flag::UInt32 - weighted_pred_flag::UInt32 - weighted_bipred_flag::UInt32 - transquant_bypass_enabled_flag::UInt32 - tiles_enabled_flag::UInt32 - entropy_coding_sync_enabled_flag::UInt32 - uniform_spacing_flag::UInt32 - loop_filter_across_tiles_enabled_flag::UInt32 - pps_loop_filter_across_slices_enabled_flag::UInt32 - deblocking_filter_control_present_flag::UInt32 - deblocking_filter_override_enabled_flag::UInt32 - pps_deblocking_filter_disabled_flag::UInt32 - pps_scaling_list_data_present_flag::UInt32 - lists_modification_present_flag::UInt32 - slice_segment_header_extension_present_flag::UInt32 - pps_extension_present_flag::UInt32 - cross_component_prediction_enabled_flag::UInt32 - chroma_qp_offset_list_enabled_flag::UInt32 - pps_curr_pic_ref_enabled_flag::UInt32 - residual_adaptive_colour_transform_enabled_flag::UInt32 - pps_slice_act_qp_offsets_present_flag::UInt32 - pps_palette_predictor_initializer_present_flag::UInt32 - monochrome_palette_flag::UInt32 - pps_range_extension_flag::UInt32 -end - -struct StdVideoH265PictureParameterSet - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - num_extra_slice_header_bits::UInt8 - num_ref_idx_l0_default_active_minus1::UInt8 - num_ref_idx_l1_default_active_minus1::UInt8 - init_qp_minus26::Int8 - diff_cu_qp_delta_depth::UInt8 - pps_cb_qp_offset::Int8 - pps_cr_qp_offset::Int8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - flags::StdVideoH265PpsFlags - pScalingLists::Ptr{StdVideoH265ScalingLists} - log2_max_transform_skip_block_size_minus2::UInt8 - diff_cu_chroma_qp_offset_depth::UInt8 - chroma_qp_offset_list_len_minus1::UInt8 - cb_qp_offset_list::NTuple{6, Int8} - cr_qp_offset_list::NTuple{6, Int8} - log2_sao_offset_scale_luma::UInt8 - log2_sao_offset_scale_chroma::UInt8 - pps_act_y_qp_offset_plus5::Int8 - pps_act_cb_qp_offset_plus5::Int8 - pps_act_cr_qp_offset_plus5::Int8 - pps_num_palette_predictor_initializer::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end - -struct StdVideoDecodeH265PictureInfoFlags - IrapPicFlag::UInt32 - IdrPicFlag::UInt32 - IsReference::UInt32 - short_term_ref_pic_set_sps_flag::UInt32 -end - -struct StdVideoDecodeH265PictureInfo - vps_video_parameter_set_id::UInt8 - sps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - num_short_term_ref_pic_sets::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - NumDeltaPocsOfRefRpsIdx::UInt8 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} - flags::StdVideoDecodeH265PictureInfoFlags -end - -struct StdVideoDecodeH265ReferenceInfoFlags - is_long_term::UInt32 - is_non_existing::UInt32 -end - -struct StdVideoDecodeH265ReferenceInfo - PicOrderCntVal::Int32 - flags::StdVideoDecodeH265ReferenceInfoFlags -end - -const VkVideoDecodeH265CreateFlagsEXT = VkFlags - -struct VkVideoDecodeH265ProfileEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc -end - -struct VkVideoDecodeH265CapabilitiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevel::UInt32 - stdExtensionVersion::VkExtensionProperties -end - -struct VkVideoDecodeH265SessionCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeH265CreateFlagsEXT - pStdExtensionVersion::Ptr{VkExtensionProperties} -end - -struct VkVideoDecodeH265SessionParametersAddInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - spsStdCount::UInt32 - pSpsStd::Ptr{StdVideoH265SequenceParameterSet} - ppsStdCount::UInt32 - pPpsStd::Ptr{StdVideoH265PictureParameterSet} -end - -struct VkVideoDecodeH265SessionParametersCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSpsStdCount::UInt32 - maxPpsStdCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoEXT} -end - -struct VkVideoDecodeH265PictureInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - slicesCount::UInt32 - pSlicesDataOffsets::Ptr{UInt32} -end - -struct VkVideoDecodeH265DpbSlotInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} -end From c15a5184f3f13f67ea99c4469b171f2cde1efab4 Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Wed, 24 Feb 2021 23:21:34 +0900 Subject: [PATCH 05/17] Disable codegen option `opaque_as_mutable_struct` --- gen/generator.toml | 5 ++- src/LibVulkan.jl | 82 +++++++++++++++++++++++----------------------- 2 files changed, 45 insertions(+), 42 deletions(-) diff --git a/gen/generator.toml b/gen/generator.toml index 1fbe318..7a08efb 100644 --- a/gen/generator.toml +++ b/gen/generator.toml @@ -8,4 +8,7 @@ module_name = "LibVulkan" export_symbol_prefixes = ["VK_", "Vk", "vk"] prologue_file_path = "./gen/prologue.jl" -epilogue_file_path = "" \ No newline at end of file +epilogue_file_path = "" + +[codegen] +opaque_as_mutable_struct = false \ No newline at end of file diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index 9be50e8..708054c 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -89,103 +89,103 @@ const VkFlags = UInt32 const VkSampleMask = UInt32 -mutable struct VkBuffer_T end +const VkBuffer_T = Cvoid const VkBuffer = Ptr{VkBuffer_T} -mutable struct VkImage_T end +const VkImage_T = Cvoid const VkImage = Ptr{VkImage_T} -mutable struct VkInstance_T end +const VkInstance_T = Cvoid const VkInstance = Ptr{VkInstance_T} -mutable struct VkPhysicalDevice_T end +const VkPhysicalDevice_T = Cvoid const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} -mutable struct VkDevice_T end +const VkDevice_T = Cvoid const VkDevice = Ptr{VkDevice_T} -mutable struct VkQueue_T end +const VkQueue_T = Cvoid const VkQueue = Ptr{VkQueue_T} -mutable struct VkSemaphore_T end +const VkSemaphore_T = Cvoid const VkSemaphore = Ptr{VkSemaphore_T} -mutable struct VkCommandBuffer_T end +const VkCommandBuffer_T = Cvoid const VkCommandBuffer = Ptr{VkCommandBuffer_T} -mutable struct VkFence_T end +const VkFence_T = Cvoid const VkFence = Ptr{VkFence_T} -mutable struct VkDeviceMemory_T end +const VkDeviceMemory_T = Cvoid const VkDeviceMemory = Ptr{VkDeviceMemory_T} -mutable struct VkEvent_T end +const VkEvent_T = Cvoid const VkEvent = Ptr{VkEvent_T} -mutable struct VkQueryPool_T end +const VkQueryPool_T = Cvoid const VkQueryPool = Ptr{VkQueryPool_T} -mutable struct VkBufferView_T end +const VkBufferView_T = Cvoid const VkBufferView = Ptr{VkBufferView_T} -mutable struct VkImageView_T end +const VkImageView_T = Cvoid const VkImageView = Ptr{VkImageView_T} -mutable struct VkShaderModule_T end +const VkShaderModule_T = Cvoid const VkShaderModule = Ptr{VkShaderModule_T} -mutable struct VkPipelineCache_T end +const VkPipelineCache_T = Cvoid const VkPipelineCache = Ptr{VkPipelineCache_T} -mutable struct VkPipelineLayout_T end +const VkPipelineLayout_T = Cvoid const VkPipelineLayout = Ptr{VkPipelineLayout_T} -mutable struct VkPipeline_T end +const VkPipeline_T = Cvoid const VkPipeline = Ptr{VkPipeline_T} -mutable struct VkRenderPass_T end +const VkRenderPass_T = Cvoid const VkRenderPass = Ptr{VkRenderPass_T} -mutable struct VkDescriptorSetLayout_T end +const VkDescriptorSetLayout_T = Cvoid const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} -mutable struct VkSampler_T end +const VkSampler_T = Cvoid const VkSampler = Ptr{VkSampler_T} -mutable struct VkDescriptorSet_T end +const VkDescriptorSet_T = Cvoid const VkDescriptorSet = Ptr{VkDescriptorSet_T} -mutable struct VkDescriptorPool_T end +const VkDescriptorPool_T = Cvoid const VkDescriptorPool = Ptr{VkDescriptorPool_T} -mutable struct VkFramebuffer_T end +const VkFramebuffer_T = Cvoid const VkFramebuffer = Ptr{VkFramebuffer_T} -mutable struct VkCommandPool_T end +const VkCommandPool_T = Cvoid const VkCommandPool = Ptr{VkCommandPool_T} @@ -4312,11 +4312,11 @@ function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) end -mutable struct VkSamplerYcbcrConversion_T end +const VkSamplerYcbcrConversion_T = Cvoid const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} -mutable struct VkDescriptorUpdateTemplate_T end +const VkDescriptorUpdateTemplate_T = Cvoid const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} @@ -5990,7 +5990,7 @@ function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) end -mutable struct VkSurfaceKHR_T end +const VkSurfaceKHR_T = Cvoid const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} @@ -6109,7 +6109,7 @@ function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPre ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) end -mutable struct VkSwapchainKHR_T end +const VkSwapchainKHR_T = Cvoid const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} @@ -6280,11 +6280,11 @@ function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) end -mutable struct VkDisplayKHR_T end +const VkDisplayKHR_T = Cvoid const VkDisplayKHR = Ptr{VkDisplayKHR_T} -mutable struct VkDisplayModeKHR_T end +const VkDisplayModeKHR_T = Cvoid const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} @@ -7495,7 +7495,7 @@ function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableIn ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) end -mutable struct VkDebugReportCallbackEXT_T end +const VkDebugReportCallbackEXT_T = Cvoid const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} @@ -8289,7 +8289,7 @@ function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) end -mutable struct VkDebugUtilsMessengerEXT_T end +const VkDebugUtilsMessengerEXT_T = Cvoid const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} @@ -8692,7 +8692,7 @@ function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) end -mutable struct VkValidationCacheEXT_T end +const VkValidationCacheEXT_T = Cvoid const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} @@ -8860,7 +8860,7 @@ function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampl ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) end -mutable struct VkAccelerationStructureKHR_T end +const VkAccelerationStructureKHR_T = Cvoid const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} @@ -9570,7 +9570,7 @@ struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL shaderIntegerFunctions2::VkBool32 end -mutable struct VkPerformanceConfigurationINTEL_T end +const VkPerformanceConfigurationINTEL_T = Cvoid const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} @@ -10241,7 +10241,7 @@ struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT shaderDemoteToHelperInvocation::VkBool32 end -mutable struct VkIndirectCommandsLayoutNV_T end +const VkIndirectCommandsLayoutNV_T = Cvoid const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} @@ -10503,7 +10503,7 @@ struct VkPhysicalDeviceCustomBorderColorFeaturesEXT customBorderColorWithoutFormat::VkBool32 end -mutable struct VkPrivateDataSlotEXT_T end +const VkPrivateDataSlotEXT_T = Cvoid const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} @@ -10618,7 +10618,7 @@ struct VkPhysicalDevice4444FormatsFeaturesEXT formatA4B4G4R4::VkBool32 end -mutable struct ANativeWindow end +const ANativeWindow = Cvoid const VkAndroidSurfaceCreateFlagsKHR = VkFlags @@ -10637,7 +10637,7 @@ function vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) ccall((:vkCreateAndroidSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkAndroidSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -mutable struct AHardwareBuffer end +const AHardwareBuffer = Cvoid struct VkAndroidHardwareBufferUsageANDROID sType::VkStructureType @@ -11119,7 +11119,7 @@ end struct VkPresentFrameTokenGGP end -mutable struct VkDeferredOperationKHR_T end +const VkDeferredOperationKHR_T = Cvoid const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} From ca58d45e24327d082562aa41649e1bad3acf096f Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Thu, 25 Feb 2021 13:09:50 +0900 Subject: [PATCH 06/17] Use `add_def` macro --- gen/definitions.jl | 96 +++++++++++----------------------------------- 1 file changed, 23 insertions(+), 73 deletions(-) diff --git a/gen/definitions.jl b/gen/definitions.jl index 020a98f..cc19f80 100644 --- a/gen/definitions.jl +++ b/gen/definitions.jl @@ -1,83 +1,33 @@ # X11/X.h -struct Window <: AbstractJuliaSDT end -struct VisualID <: AbstractJuliaSDT end +@add_def Window AbstractJuliaSDT +@add_def VisualID AbstractJuliaSDT # X11/Xlib.h -struct Display <: AbstractJuliaSIT end +@add_def Display # X11/Xrandr.h -struct RROutput <: AbstractJuliaSIT end +@add_def RROutput # xcb.h -struct xcb_connection_t <: AbstractJuliaSIT end -struct xcb_window_t <: AbstractJuliaSIT end -struct xcb_visualid_t <: AbstractJuliaSIT end +@add_def xcb_connection_t +@add_def xcb_window_t +@add_def xcb_visualid_t # Wayland -struct wl_display <: AbstractJuliaSIT end -struct wl_surface <: AbstractJuliaSIT end +@add_def wl_display +@add_def wl_surface # Mir -struct MirConnection <: AbstractJuliaSIT end -struct MirSurface <: AbstractJuliaSIT end +@add_def MirConnection +@add_def MirSurface # Windows -struct HINSTANCE <: AbstractJuliaSIT end -struct HWND <: AbstractJuliaSIT end -struct HMONITOR <: AbstractJuliaSIT end -struct HANDLE <: AbstractJuliaSIT end -struct DWORD <: AbstractJuliaSIT end -struct LPCWSTR <: AbstractJuliaSIT end -struct SECURITY_ATTRIBUTES <: AbstractJuliaSIT end +@add_def HINSTANCE +@add_def HWND +@add_def HMONITOR +@add_def HANDLE +@add_def DWORD +@add_def LPCWSTR +@add_def SECURITY_ATTRIBUTES # DirectFB -struct IDirectFB <: AbstractJuliaSIT end -struct IDirectFBSurface <: AbstractJuliaSIT end +@add_def IDirectFB +@add_def IDirectFBSurface # Zircon -struct zx_handle_t <: AbstractJuliaSIT end +@add_def zx_handle_t # GGP C -struct GgpStreamDescriptor <: AbstractJuliaSIT end -struct GgpFrameToken <: AbstractJuliaSIT end - -add_definition(Dict( - :Window => Window(), - :VisualID => VisualID(), - :Display => Display(), - :RROutput => RROutput(), - :xcb_connection_t => xcb_connection_t(), - :xcb_window_t => xcb_window_t(), - :xcb_visualid_t => xcb_visualid_t(), - :wl_display => wl_display(), - :wl_surface => wl_surface(), - :MirConnection => MirConnection(), - :MirSurface => MirSurface(), - :HINSTANCE => HINSTANCE(), - :HWND => HWND(), - :HMONITOR => HMONITOR(), - :HANDLE => HANDLE(), - :DWORD => DWORD(), - :LPCWSTR => LPCWSTR(), - :SECURITY_ATTRIBUTES => SECURITY_ATTRIBUTES(), - :IDirectFB => IDirectFB(), - :IDirectFBSurface => IDirectFBSurface(), - :zx_handle_t => zx_handle_t(), - :GgpStreamDescriptor => GgpStreamDescriptor(), - :GgpFrameToken => GgpFrameToken(), -)) - -Generators.translate(::Window, options=Dict()) = :Window -Generators.translate(::VisualID, options=Dict()) = :VisualID -Generators.translate(::Display, options=Dict()) = :Display -Generators.translate(::RROutput, options=Dict()) = :RROutput -Generators.translate(::xcb_connection_t, options=Dict()) = :xcb_connection_t -Generators.translate(::xcb_window_t, options=Dict()) = :xcb_window_t -Generators.translate(::xcb_visualid_t, options=Dict()) = :xcb_visualid_t -Generators.translate(::wl_display, options=Dict()) = :wl_display -Generators.translate(::wl_surface, options=Dict()) = :wl_surface -Generators.translate(::MirConnection, options=Dict()) = :MirConnection -Generators.translate(::MirSurface, options=Dict()) = :MirSurface -Generators.translate(::HINSTANCE, options=Dict()) = :HINSTANCE -Generators.translate(::HWND, options=Dict()) = :HWND -Generators.translate(::HMONITOR, options=Dict()) = :HMONITOR -Generators.translate(::HANDLE, options=Dict()) = :HANDLE -Generators.translate(::DWORD, options=Dict()) = :DWORD -Generators.translate(::LPCWSTR, options=Dict()) = :LPCWSTR -Generators.translate(::SECURITY_ATTRIBUTES, options=Dict()) = :SECURITY_ATTRIBUTES -Generators.translate(::IDirectFB, options=Dict()) = :IDirectFB -Generators.translate(::IDirectFBSurface, options=Dict()) = :IDirectFBSurface -Generators.translate(::zx_handle_t, options=Dict()) = :zx_handle_t -Generators.translate(::GgpStreamDescriptor, options=Dict()) = :GgpStreamDescriptor -Generators.translate(::GgpFrameToken, options=Dict()) = :GgpFrameToken +@add_def GgpStreamDescriptor +@add_def GgpFrameToken From 086b9e1366dd8dd5ae8e4658fb79a63e45ec85a6 Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Thu, 25 Feb 2021 15:28:13 +0900 Subject: [PATCH 07/17] Regenerate --- src/LibVulkan.jl | 76 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index 708054c..e61c39a 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -10702,6 +10702,10 @@ end const VkImagePipeSurfaceCreateFlagsFUCHSIA = VkFlags struct VkImagePipeSurfaceCreateInfoFUCHSIA + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImagePipeSurfaceCreateFlagsFUCHSIA + imagePipeHandle::Cint end # C code: @@ -10811,6 +10815,11 @@ end const VkWin32SurfaceCreateFlagsKHR = VkFlags struct VkWin32SurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWin32SurfaceCreateFlagsKHR + hinstance::Cint + hwnd::Cint end # C code: @@ -10830,9 +10839,19 @@ function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFam end struct VkImportMemoryWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + handle::Cint + name::Cint end struct VkExportMemoryWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{Cint} + dwAccess::Cint + name::Cint end struct VkMemoryWin32HandlePropertiesKHR @@ -10877,9 +10896,21 @@ struct VkWin32KeyedMutexAcquireReleaseInfoKHR end struct VkImportSemaphoreWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + handle::Cint + name::Cint end struct VkExportSemaphoreWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{Cint} + dwAccess::Cint + name::Cint end struct VkD3D12FenceSubmitInfoKHR @@ -10915,9 +10946,21 @@ function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) end struct VkImportFenceWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + handle::Cint + name::Cint end struct VkExportFenceWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{Cint} + dwAccess::Cint + name::Cint end struct VkFenceGetWin32HandleInfoKHR @@ -10944,9 +10987,17 @@ function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) end struct VkImportMemoryWin32HandleInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagsNV + handle::Cint end struct VkExportMemoryWin32HandleInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{Cint} + dwAccess::Cint end # C code: @@ -10990,6 +11041,9 @@ struct VkSurfaceCapabilitiesFullScreenExclusiveEXT end struct VkSurfaceFullScreenExclusiveWin32InfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + hmonitor::Cint end # C code: @@ -11027,6 +11081,11 @@ end const VkXcbSurfaceCreateFlagsKHR = VkFlags struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{Cint} + window::Cint end # C code: @@ -11048,6 +11107,11 @@ end const VkXlibSurfaceCreateFlagsKHR = VkFlags struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Cint} + window::Cint end # C code: @@ -11069,6 +11133,11 @@ end const VkDirectFBSurfaceCreateFlagsEXT = VkFlags struct VkDirectFBSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDirectFBSurfaceCreateFlagsEXT + dfb::Ptr{Cint} + surface::Ptr{Cint} end # C code: @@ -11106,6 +11175,10 @@ end const VkStreamDescriptorSurfaceCreateFlagsGGP = VkFlags struct VkStreamDescriptorSurfaceCreateInfoGGP + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkStreamDescriptorSurfaceCreateFlagsGGP + streamDescriptor::Cint end # C code: @@ -11117,6 +11190,9 @@ function vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, p end struct VkPresentFrameTokenGGP + sType::VkStructureType + pNext::Ptr{Cvoid} + frameToken::Cint end const VkDeferredOperationKHR_T = Cvoid From a75ac39d578e4ed63dea5a3260c728a279a29cce Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Sun, 7 Mar 2021 20:05:40 +0900 Subject: [PATCH 08/17] Update LibVulkan.jl --- src/LibVulkan.jl | 1067 ++++++++++++++++++++++++++-------------------- 1 file changed, 609 insertions(+), 458 deletions(-) diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index e61c39a..b5585c4 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -2208,27 +2208,27 @@ struct VkMemoryBarrier dstAccessMask::VkAccessFlags end -# C code: +# C code: # typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) const PFN_vkAllocationFunction = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) const PFN_vkFreeFunction = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) const PFN_vkInternalAllocationNotification = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) const PFN_vkInternalFreeNotification = Ptr{Cvoid} -# C code: +# C code: # typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) const PFN_vkReallocationFunction = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) const PFN_vkVoidFunction = Ptr{Cvoid} @@ -3162,6 +3162,23 @@ struct VkClearColorValue data::NTuple{16, UInt8} end +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(VkClearColorValue, r) + GC.@preserve r unsafe_load(getproperty(ptr, f)) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + struct VkClearDepthStencilValue depth::Cfloat stencil::UInt32 @@ -3171,6 +3188,22 @@ struct VkClearValue data::NTuple{16, UInt8} end +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(VkClearValue, r) + GC.@preserve r unsafe_load(getproperty(ptr, f)) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + struct VkClearAttachment aspectMask::VkImageAspectFlags colorAttachment::UInt32 @@ -3216,551 +3249,551 @@ struct VkRenderPassBeginInfo pClearValues::Ptr{VkClearValue} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) const PFN_vkCreateInstance = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyInstance = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} -# C code: +# C code: # typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} -# C code: +# C code: # typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) const PFN_vkCreateDevice = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyDevice = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) const PFN_vkGetDeviceQueue = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) const PFN_vkQueueSubmit = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) const PFN_vkQueueWaitIdle = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) const PFN_vkDeviceWaitIdle = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) const PFN_vkAllocateMemory = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) const PFN_vkFreeMemory = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) const PFN_vkMapMemory = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) const PFN_vkUnmapMemory = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) const PFN_vkBindBufferMemory = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) const PFN_vkBindImageMemory = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) const PFN_vkQueueBindSparse = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) const PFN_vkCreateFence = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyFence = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) const PFN_vkResetFences = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) const PFN_vkGetFenceStatus = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) const PFN_vkWaitForFences = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) const PFN_vkCreateSemaphore = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroySemaphore = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) const PFN_vkCreateEvent = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyEvent = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) const PFN_vkGetEventStatus = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) const PFN_vkSetEvent = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) const PFN_vkResetEvent = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) const PFN_vkCreateQueryPool = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyQueryPool = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) const PFN_vkGetQueryPoolResults = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) const PFN_vkCreateBuffer = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyBuffer = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) const PFN_vkCreateBufferView = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyBufferView = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) const PFN_vkCreateImage = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyImage = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) const PFN_vkCreateImageView = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyImageView = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) const PFN_vkCreateShaderModule = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyShaderModule = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) const PFN_vkCreatePipelineCache = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyPipelineCache = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) const PFN_vkGetPipelineCacheData = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) const PFN_vkMergePipelineCaches = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) const PFN_vkCreateComputePipelines = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyPipeline = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) const PFN_vkCreatePipelineLayout = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) const PFN_vkCreateSampler = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroySampler = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) const PFN_vkCreateDescriptorPool = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) const PFN_vkResetDescriptorPool = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) const PFN_vkFreeDescriptorSets = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) const PFN_vkCreateFramebuffer = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyFramebuffer = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) const PFN_vkCreateRenderPass = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyRenderPass = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) const PFN_vkCreateCommandPool = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyCommandPool = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) const PFN_vkResetCommandPool = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) const PFN_vkFreeCommandBuffers = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) const PFN_vkBeginCommandBuffer = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) const PFN_vkEndCommandBuffer = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) const PFN_vkResetCommandBuffer = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) const PFN_vkCmdBindPipeline = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) const PFN_vkCmdSetViewport = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) const PFN_vkCmdSetScissor = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) const PFN_vkCmdSetLineWidth = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) const PFN_vkCmdSetDepthBias = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) const PFN_vkCmdSetStencilReference = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) const PFN_vkCmdDraw = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) const PFN_vkCmdDrawIndexed = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) const PFN_vkCmdDrawIndirect = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) const PFN_vkCmdDispatch = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) const PFN_vkCmdCopyBuffer = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) const PFN_vkCmdCopyImage = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) const PFN_vkCmdBlitImage = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) const PFN_vkCmdFillBuffer = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) const PFN_vkCmdClearColorImage = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) const PFN_vkCmdClearAttachments = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) const PFN_vkCmdResolveImage = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) const PFN_vkCmdSetEvent = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) const PFN_vkCmdResetEvent = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) const PFN_vkCmdWaitEvents = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) const PFN_vkCmdBeginQuery = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) const PFN_vkCmdEndQuery = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) const PFN_vkCmdResetQueryPool = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) const PFN_vkCmdPushConstants = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) const PFN_vkCmdNextSubpass = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) const PFN_vkCmdEndRenderPass = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) const PFN_vkCmdExecuteCommands = Ptr{Cvoid} @@ -5009,115 +5042,115 @@ end const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) const PFN_vkBindBufferMemory2 = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) const PFN_vkBindImageMemory2 = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) const PFN_vkCmdDispatchBase = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) const PFN_vkTrimCommandPool = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} @@ -5886,55 +5919,55 @@ struct VkDeviceMemoryOpaqueCaptureAddressInfo memory::VkDeviceMemory end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) const PFN_vkCreateRenderPass2 = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) const PFN_vkResetQueryPool = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) const PFN_vkWaitSemaphores = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) const PFN_vkSignalSemaphore = Ptr{Cvoid} -# C code: +# C code: # typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} -# C code: +# C code: # typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} -# C code: +# C code: # typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} @@ -6069,23 +6102,23 @@ struct VkSurfaceFormatKHR colorSpace::VkColorSpaceKHR end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} @@ -6208,39 +6241,39 @@ struct VkDeviceGroupSwapchainCreateInfoKHR modes::VkDeviceGroupPresentModeFlagsKHR end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) const PFN_vkQueuePresentKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} @@ -6359,31 +6392,31 @@ struct VkDisplaySurfaceCreateInfoKHR imageExtent::VkExtent2D end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} @@ -6423,7 +6456,7 @@ struct VkDisplayPresentInfoKHR persistent::VkBool32 end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} @@ -6455,31 +6488,31 @@ const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} @@ -6533,15 +6566,15 @@ const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} @@ -6559,7 +6592,7 @@ end const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} @@ -6571,7 +6604,7 @@ const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} @@ -6599,7 +6632,7 @@ const VkExternalBufferPropertiesKHR = VkExternalBufferProperties const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} @@ -6633,11 +6666,11 @@ struct VkMemoryGetFdInfoKHR handleType::VkExternalMemoryHandleTypeFlagBits end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} @@ -6661,7 +6694,7 @@ const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemapho const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} @@ -6691,11 +6724,11 @@ struct VkSemaphoreGetFdInfoKHR handleType::VkExternalSemaphoreHandleTypeFlagBits end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} @@ -6713,11 +6746,11 @@ struct VkPhysicalDevicePushDescriptorPropertiesKHR maxPushDescriptors::UInt32 end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} @@ -6763,15 +6796,15 @@ const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} @@ -6809,19 +6842,19 @@ const VkSubpassBeginInfoKHR = VkSubpassBeginInfo const VkSubpassEndInfoKHR = VkSubpassEndInfo -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} @@ -6847,7 +6880,7 @@ struct VkSharedPresentSurfaceCapabilitiesKHR sharedPresentSupportedUsageFlags::VkImageUsageFlags end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} @@ -6867,7 +6900,7 @@ const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo const VkExternalFencePropertiesKHR = VkExternalFenceProperties -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} @@ -6897,11 +6930,11 @@ struct VkFenceGetFdInfoKHR handleType::VkExternalFenceHandleTypeFlagBits end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) const PFN_vkImportFenceFdKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) const PFN_vkGetFenceFdKHR = Ptr{Cvoid} @@ -7005,6 +7038,26 @@ struct VkPerformanceCounterResultKHR data::NTuple{8, UInt8} end +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(VkPerformanceCounterResultKHR, r) + GC.@preserve r unsafe_load(getproperty(ptr, f)) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + struct VkAcquireProfilingLockInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} @@ -7018,19 +7071,19 @@ struct VkPerformanceQuerySubmitInfoKHR counterPassIndex::UInt32 end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} @@ -7082,11 +7135,11 @@ struct VkSurfaceFormat2KHR surfaceFormat::VkSurfaceFormatKHR end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} @@ -7133,19 +7186,19 @@ struct VkDisplayPlaneCapabilities2KHR capabilities::VkDisplayPlaneCapabilitiesKHR end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} @@ -7179,15 +7232,15 @@ const VkMemoryRequirements2KHR = VkMemoryRequirements2 const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} @@ -7225,11 +7278,11 @@ const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSample const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} @@ -7245,11 +7298,11 @@ const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} @@ -7265,7 +7318,7 @@ const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Pr const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} @@ -7273,11 +7326,11 @@ function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} @@ -7338,15 +7391,15 @@ const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} @@ -7388,15 +7441,15 @@ const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddress const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo -# C code: +# C code: # typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} -# C code: +# C code: # typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} -# C code: +# C code: # typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} @@ -7452,6 +7505,24 @@ struct VkPipelineExecutableStatisticValueKHR data::NTuple{8, UInt8} end +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(VkPipelineExecutableStatisticValueKHR, r) + GC.@preserve r unsafe_load(getproperty(ptr, f)) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + struct VkPipelineExecutableStatisticKHR sType::VkStructureType pNext::Ptr{Cvoid} @@ -7471,15 +7542,15 @@ struct VkPipelineExecutableInternalRepresentationKHR pData::Ptr{Cvoid} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} @@ -7554,7 +7625,7 @@ end const VkDebugReportFlagsEXT = VkFlags -# C code: +# C code: # typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} @@ -7566,15 +7637,15 @@ struct VkDebugReportCallbackCreateInfoEXT pUserData::Ptr{Cvoid} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} @@ -7627,23 +7698,23 @@ struct VkDebugMarkerMarkerInfoEXT color::NTuple{4, Cfloat} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} @@ -7717,27 +7788,27 @@ struct VkPipelineRasterizationStateStreamCreateInfoEXT rasterizationStream::UInt32 end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} @@ -7780,11 +7851,11 @@ struct VkImageViewAddressPropertiesNVX size::VkDeviceSize end -# C code: +# C code: # typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} @@ -7796,11 +7867,11 @@ function vkGetImageViewAddressNVX(device, imageView, pProperties) ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} @@ -7843,7 +7914,7 @@ struct VkShaderStatisticsInfoAMD computeWorkGroupSize::NTuple{3, UInt32} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} @@ -7883,7 +7954,7 @@ struct VkExternalImageFormatPropertiesNV compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} @@ -7962,11 +8033,11 @@ struct VkCommandBufferInheritanceConditionalRenderingInfoEXT conditionalRenderingEnable::VkBool32 end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} @@ -7991,7 +8062,7 @@ struct VkPipelineViewportWScalingStateCreateInfoNV pViewportWScalings::Ptr{VkViewportWScalingNV} end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} @@ -7999,7 +8070,7 @@ function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} @@ -8030,7 +8101,7 @@ struct VkSurfaceCapabilities2EXT supportedSurfaceCounters::VkSurfaceCounterFlagsEXT end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} @@ -8079,19 +8150,19 @@ struct VkSwapchainCounterCreateInfoEXT surfaceCounters::VkSurfaceCounterFlagsEXT end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} @@ -8135,11 +8206,11 @@ struct VkPresentTimesInfoGOOGLE pTimes::Ptr{VkPresentTimeGOOGLE} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} @@ -8209,7 +8280,7 @@ struct VkPipelineDiscardRectangleStateCreateInfoEXT pDiscardRectangles::Ptr{VkRect2D} end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} @@ -8281,7 +8352,7 @@ struct VkHdrMetadataEXT maxFrameAverageLightLevel::Cfloat end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} @@ -8346,7 +8417,7 @@ struct VkDebugUtilsMessengerCallbackDataEXT pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} end -# C code: +# C code: # typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} @@ -8370,47 +8441,47 @@ struct VkDebugUtilsObjectTagInfoEXT pTag::Ptr{Cvoid} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} @@ -8550,11 +8621,11 @@ struct VkMultisamplePropertiesEXT maxSampleLocationGridSize::VkExtent2D end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} @@ -8684,7 +8755,7 @@ struct VkImageDrmFormatModifierPropertiesEXT drmFormatModifier::UInt64 end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} @@ -8717,19 +8788,19 @@ struct VkShaderModuleValidationCacheCreateInfoEXT validationCache::VkValidationCacheEXT end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} @@ -8836,15 +8907,15 @@ struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} @@ -9116,69 +9187,89 @@ struct VkAccelerationStructureInstanceKHR data::NTuple{64, UInt8} end +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 384) + f === :mask && return Ptr{UInt32}(x + 408) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 416) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 440) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 448) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(VkAccelerationStructureInstanceKHR, r) + GC.@preserve r unsafe_load(getproperty(ptr, f)) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) const PFN_vkCompileDeferredNV = Ptr{Cvoid} @@ -9304,7 +9395,7 @@ struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT minImportedHostPointerAlignment::VkDeviceSize end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} @@ -9312,7 +9403,7 @@ function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, p ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} @@ -9346,11 +9437,11 @@ struct VkCalibratedTimestampInfoEXT timeDomain::VkTimeDomainEXT end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} @@ -9478,15 +9569,15 @@ struct VkDrawMeshTasksIndirectCommandNV firstTask::UInt32 end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} @@ -9527,7 +9618,7 @@ struct VkPhysicalDeviceExclusiveScissorFeaturesNV exclusiveScissor::VkBool32 end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} @@ -9548,11 +9639,11 @@ struct VkCheckpointDataNV pCheckpointMarker::Ptr{Cvoid} end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} @@ -9609,6 +9700,25 @@ struct VkPerformanceValueDataINTEL data::NTuple{8, UInt8} end +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(VkPerformanceValueDataINTEL, r) + GC.@preserve r unsafe_load(getproperty(ptr, f)) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + struct VkPerformanceValueINTEL type::VkPerformanceValueTypeINTEL data::VkPerformanceValueDataINTEL @@ -9654,39 +9764,39 @@ struct VkPerformanceConfigurationAcquireInfoINTEL type::VkPerformanceConfigurationTypeINTEL end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} @@ -9747,7 +9857,7 @@ struct VkSwapchainDisplayNativeHdrCreateInfoAMD localDimmingEnable::VkBool32 end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} @@ -9863,7 +9973,7 @@ struct VkBufferDeviceAddressCreateInfoEXT deviceAddress::VkDeviceAddress end -# C code: +# C code: # typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} @@ -9894,7 +10004,7 @@ struct VkPhysicalDeviceToolPropertiesEXT layer::NTuple{256, Cchar} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} @@ -9982,7 +10092,7 @@ struct VkPhysicalDeviceCooperativeMatrixPropertiesNV cooperativeMatrixSupportedStages::VkShaderStageFlags end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} @@ -10020,7 +10130,7 @@ struct VkFramebufferMixedSamplesCombinationNV colorSamples::VkSampleCountFlags end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} @@ -10050,7 +10160,7 @@ struct VkHeadlessSurfaceCreateInfoEXT flags::VkHeadlessSurfaceCreateFlagsEXT end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} @@ -10092,7 +10202,7 @@ struct VkPipelineRasterizationLineStateCreateInfoEXT lineStipplePattern::UInt16 end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} @@ -10119,7 +10229,7 @@ end const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} @@ -10139,51 +10249,51 @@ struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extendedDynamicState::VkBool32 end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} @@ -10392,27 +10502,27 @@ struct VkGeneratedCommandsMemoryRequirementsInfoNV maxSequencesCount::UInt32 end -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} @@ -10531,19 +10641,19 @@ struct VkPrivateDataSlotCreateInfoEXT flags::VkPrivateDataSlotCreateFlagsEXT end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} @@ -10618,10 +10728,10 @@ struct VkPhysicalDevice4444FormatsFeaturesEXT formatA4B4G4R4::VkBool32 end -const ANativeWindow = Cvoid - const VkAndroidSurfaceCreateFlagsKHR = VkFlags +const ANativeWindow = Cvoid + struct VkAndroidSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} @@ -10629,7 +10739,7 @@ struct VkAndroidSurfaceCreateInfoKHR window::Ptr{ANativeWindow} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateAndroidSurfaceKHR ) ( VkInstance instance , const VkAndroidSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) const PFN_vkCreateAndroidSurfaceKHR = Ptr{Cvoid} @@ -10637,8 +10747,6 @@ function vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) ccall((:vkCreateAndroidSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkAndroidSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -const AHardwareBuffer = Cvoid - struct VkAndroidHardwareBufferUsageANDROID sType::VkStructureType pNext::Ptr{Cvoid} @@ -10665,6 +10773,8 @@ struct VkAndroidHardwareBufferFormatPropertiesANDROID suggestedYChromaOffset::VkChromaLocation end +const AHardwareBuffer = Cvoid + struct VkImportAndroidHardwareBufferInfoANDROID sType::VkStructureType pNext::Ptr{Cvoid} @@ -10683,11 +10793,11 @@ struct VkExternalFormatANDROID externalFormat::UInt64 end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetAndroidHardwareBufferPropertiesANDROID ) ( VkDevice device , const struct AHardwareBuffer * buffer , VkAndroidHardwareBufferPropertiesANDROID * pProperties ) const PFN_vkGetAndroidHardwareBufferPropertiesANDROID = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryAndroidHardwareBufferANDROID ) ( VkDevice device , const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo , struct AHardwareBuffer * * pBuffer ) const PFN_vkGetMemoryAndroidHardwareBufferANDROID = Ptr{Cvoid} @@ -10708,7 +10818,7 @@ struct VkImagePipeSurfaceCreateInfoFUCHSIA imagePipeHandle::Cint end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateImagePipeSurfaceFUCHSIA ) ( VkInstance instance , const VkImagePipeSurfaceCreateInfoFUCHSIA * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) const PFN_vkCreateImagePipeSurfaceFUCHSIA = Ptr{Cvoid} @@ -10725,7 +10835,7 @@ struct VkIOSSurfaceCreateInfoMVK pView::Ptr{Cvoid} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateIOSSurfaceMVK ) ( VkInstance instance , const VkIOSSurfaceCreateInfoMVK * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) const PFN_vkCreateIOSSurfaceMVK = Ptr{Cvoid} @@ -10742,7 +10852,7 @@ struct VkMacOSSurfaceCreateInfoMVK pView::Ptr{Cvoid} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateMacOSSurfaceMVK ) ( VkInstance instance , const VkMacOSSurfaceCreateInfoMVK * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) const PFN_vkCreateMacOSSurfaceMVK = Ptr{Cvoid} @@ -10761,7 +10871,7 @@ struct VkMetalSurfaceCreateInfoEXT pLayer::Ptr{CAMetalLayer} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateMetalSurfaceEXT ) ( VkInstance instance , const VkMetalSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) const PFN_vkCreateMetalSurfaceEXT = Ptr{Cvoid} @@ -10778,7 +10888,7 @@ struct VkViSurfaceCreateInfoNN window::Ptr{Cvoid} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateViSurfaceNN ) ( VkInstance instance , const VkViSurfaceCreateInfoNN * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) const PFN_vkCreateViSurfaceNN = Ptr{Cvoid} @@ -10788,6 +10898,10 @@ end const VkWaylandSurfaceCreateFlagsKHR = VkFlags +const wl_display = Cvoid + +const wl_surface = Cvoid + struct VkWaylandSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} @@ -10796,11 +10910,11 @@ struct VkWaylandSurfaceCreateInfoKHR surface::Ptr{wl_surface} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} @@ -10822,11 +10936,11 @@ struct VkWin32SurfaceCreateInfoKHR hwnd::Cint end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateWin32SurfaceKHR ) ( VkInstance instance , const VkWin32SurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) const PFN_vkCreateWin32SurfaceKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex ) const PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = Ptr{Cvoid} @@ -10867,11 +10981,11 @@ struct VkMemoryGetWin32HandleInfoKHR handleType::VkExternalMemoryHandleTypeFlagBits end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleKHR ) ( VkDevice device , const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) const PFN_vkGetMemoryWin32HandleKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandlePropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , HANDLE handle , VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties ) const PFN_vkGetMemoryWin32HandlePropertiesKHR = Ptr{Cvoid} @@ -10929,11 +11043,11 @@ struct VkSemaphoreGetWin32HandleInfoKHR handleType::VkExternalSemaphoreHandleTypeFlagBits end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreWin32HandleKHR ) ( VkDevice device , const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo ) const PFN_vkImportSemaphoreWin32HandleKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreWin32HandleKHR ) ( VkDevice device , const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) const PFN_vkGetSemaphoreWin32HandleKHR = Ptr{Cvoid} @@ -10970,11 +11084,11 @@ struct VkFenceGetWin32HandleInfoKHR handleType::VkExternalFenceHandleTypeFlagBits end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceWin32HandleKHR ) ( VkDevice device , const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo ) const PFN_vkImportFenceWin32HandleKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceWin32HandleKHR ) ( VkDevice device , const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) const PFN_vkGetFenceWin32HandleKHR = Ptr{Cvoid} @@ -11000,7 +11114,7 @@ struct VkExportMemoryWin32HandleInfoNV dwAccess::Cint end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleNV ) ( VkDevice device , VkDeviceMemory memory , VkExternalMemoryHandleTypeFlagsNV handleType , HANDLE * pHandle ) const PFN_vkGetMemoryWin32HandleNV = Ptr{Cvoid} @@ -11046,19 +11160,19 @@ struct VkSurfaceFullScreenExclusiveWin32InfoEXT hmonitor::Cint end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) const PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkAcquireFullScreenExclusiveModeEXT ) ( VkDevice device , VkSwapchainKHR swapchain ) const PFN_vkAcquireFullScreenExclusiveModeEXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkReleaseFullScreenExclusiveModeEXT ) ( VkDevice device , VkSwapchainKHR swapchain ) const PFN_vkReleaseFullScreenExclusiveModeEXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModes2EXT ) ( VkDevice device , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkDeviceGroupPresentModeFlagsKHR * pModes ) const PFN_vkGetDeviceGroupSurfacePresentModes2EXT = Ptr{Cvoid} @@ -11088,11 +11202,11 @@ struct VkXcbSurfaceCreateInfoKHR window::Cint end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} @@ -11114,11 +11228,11 @@ struct VkXlibSurfaceCreateInfoKHR window::Cint end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} @@ -11140,11 +11254,11 @@ struct VkDirectFBSurfaceCreateInfoEXT surface::Ptr{Cint} end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateDirectFBSurfaceEXT ) ( VkInstance instance , const VkDirectFBSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) const PFN_vkCreateDirectFBSurfaceEXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , IDirectFB * dfb ) const PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT = Ptr{Cvoid} @@ -11156,11 +11270,11 @@ function vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queue ccall((:vkGetPhysicalDeviceDirectFBPresentationSupportEXT, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Cint}), physicalDevice, queueFamilyIndex, dfb) end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} @@ -11181,7 +11295,7 @@ struct VkStreamDescriptorSurfaceCreateInfoGGP streamDescriptor::Cint end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateStreamDescriptorSurfaceGGP ) ( VkInstance instance , const VkStreamDescriptorSurfaceCreateInfoGGP * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) const PFN_vkCreateStreamDescriptorSurfaceGGP = Ptr{Cvoid} @@ -11205,23 +11319,23 @@ struct VkDeferredOperationInfoKHR operationHandle::VkDeferredOperationKHR end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} -# C code: +# C code: # typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} @@ -11263,10 +11377,42 @@ struct VkDeviceOrHostAddressKHR data::NTuple{8, UInt8} end +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressKHR}(x) + ptr = Base.unsafe_convert(VkDeviceOrHostAddressKHR, r) + GC.@preserve r unsafe_load(getproperty(ptr, f)) +end + +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + struct VkDeviceOrHostAddressConstKHR data::NTuple{8, UInt8} end +function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) + f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) + f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) + r = Ref{VkDeviceOrHostAddressConstKHR}(x) + ptr = Base.unsafe_convert(VkDeviceOrHostAddressConstKHR, r) + GC.@preserve r unsafe_load(getproperty(ptr, f)) +end + +function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + struct VkAccelerationStructureBuildOffsetInfoKHR primitiveCount::UInt32 primitiveOffset::UInt32 @@ -11338,6 +11484,23 @@ struct VkAccelerationStructureGeometryDataKHR data::NTuple{64, UInt8} end +function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) + f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) + f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) + f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) + r = Ref{VkAccelerationStructureGeometryDataKHR}(x) + ptr = Base.unsafe_convert(VkAccelerationStructureGeometryDataKHR, r) + GC.@preserve r unsafe_load(getproperty(ptr, f)) +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + struct VkAccelerationStructureGeometryKHR sType::VkStructureType pNext::Ptr{Cvoid} @@ -11467,75 +11630,75 @@ struct VkCopyAccelerationStructureInfoKHR mode::VkCopyAccelerationStructureModeKHR end -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsKHR ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoKHR * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) const PFN_vkGetAccelerationStructureMemoryRequirementsKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildOffsetInfoKHR * const * ppOffsetInfos ) const PFN_vkCmdBuildAccelerationStructureKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureBuildGeometryInfoKHR * pInfo , VkBuffer indirectBuffer , VkDeviceSize indirectOffset , uint32_t indirectStride ) const PFN_vkCmdBuildAccelerationStructureIndirectKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructureKHR ) ( VkDevice device , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildOffsetInfoKHR * const * ppOffsetInfos ) const PFN_vkBuildAccelerationStructureKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , const VkCopyAccelerationStructureInfoKHR * pInfo ) const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedBufferRegionKHR * pRaygenShaderBindingTable , const VkStridedBufferRegionKHR * pMissShaderBindingTable , const VkStridedBufferRegionKHR * pHitShaderBindingTable , const VkStridedBufferRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} -# C code: +# C code: # typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedBufferRegionKHR * pRaygenShaderBindingTable , const VkStridedBufferRegionKHR * pMissShaderBindingTable , const VkStridedBufferRegionKHR * pHitShaderBindingTable , const VkStridedBufferRegionKHR * pCallableShaderBindingTable , VkBuffer buffer , VkDeviceSize offset ) const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} -# C code: +# C code: # typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionKHR * version ) const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} @@ -11625,24 +11788,12 @@ const VULKAN_CORE_H_ = 1 const VK_VERSION_1_0 = 1 -# Skipping MacroDefinition: VK_DEFINE_HANDLE ( object ) typedef struct object ## _T * object ; - -# Skipping MacroDefinition: VK_DEFINE_NON_DISPATCHABLE_HANDLE ( object ) typedef struct object ## _T * object ; - -VK_MAKE_VERSION(major, minor, patch) = (uint32_t(major) << 22 | uint32_t(minor) << 12) | uint32_t(patch) - # Skipping MacroDefinition: VK_API_VERSION_1_0 VK_MAKE_VERSION ( 1 , 0 , 0 ) const VK_HEADER_VERSION = 151 # Skipping MacroDefinition: VK_HEADER_VERSION_COMPLETE VK_MAKE_VERSION ( 1 , 2 , VK_HEADER_VERSION ) -VK_VERSION_MAJOR(version) = uint32_t(version) >> 22 - -VK_VERSION_MINOR(version) = uint32_t(version) >> 12 & Float32(0x3f) - -VK_VERSION_PATCH(version) = uint32_t(version) & Float32(0xff) - const VK_NULL_HANDLE = 0 # Skipping MacroDefinition: VK_ATTACHMENT_UNUSED ( ~ 0U ) From 908f493f3907facaa44eac37f5706368c276886d Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Fri, 2 Apr 2021 19:13:00 +0900 Subject: [PATCH 09/17] Regenerate with the newly added auto-mutability pass --- test/vkhelper.jl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/vkhelper.jl b/test/vkhelper.jl index 54c27b3..ce18b19 100644 --- a/test/vkhelper.jl +++ b/test/vkhelper.jl @@ -12,7 +12,7 @@ unsafe_strings2pp(names::Vector{String}) = Base.unsafe_convert(Ptr{Cstring}, Bas to_string(x::NTuple{N,UInt8}) -> String Convert a `NTuple{N,UInt8}` to `String` dropping all of the `\0`s. """ -to_string(x::NTuple{N,UInt8}) where {N} = rstrip(String(collect(x)), '\0') +to_string(x::NTuple{N,Int8}) where {N} = rstrip(String(UInt8.(collect(x))), '\0') """ int2version(::Type{VersionNumber}, ver::Integer) -> VersionNumber @@ -20,7 +20,7 @@ Convert a Vulkan version integer to a `major.minor.patch` `VersionNumber`. """ int2version(v::Integer) = VersionNumber(VK_VERSION_MAJOR(v), VK_VERSION_MINOR(v), VK_VERSION_PATCH(v)) -# extension & layer checking +# extension & layer checking struct ExtensionProperties name::String version::VersionNumber @@ -159,12 +159,12 @@ function LibVulkan.VkDebugUtilsMessengerCreateInfoEXT(messageSeverity, messageTy end function LibVulkan.VkDebugUtilsMessengerCreateInfoEXT(pfnUserCallback, pUserData) - messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | - VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT | - VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | + messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT | + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT - messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | - VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | + messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT return VkDebugUtilsMessengerCreateInfoEXT(messageSeverity, messageType, pfnUserCallback, pUserData) end @@ -255,4 +255,4 @@ function LibVulkan.VkDeviceCreateInfo(queue_count::Integer, queue_info::Ref{VkDe return VkDeviceCreateInfo(sType, pNext, flags, queueCreateInfoCount, pQueueCreateInfos, 0, C_NULL, 0, C_NULL, pEnabledFeatures) end -LibVulkan.VkPhysicalDeviceFeatures() = VkPhysicalDeviceFeatures(fill(VK_FALSE,55)...) \ No newline at end of file +LibVulkan.VkPhysicalDeviceFeatures() = VkPhysicalDeviceFeatures(fill(VK_FALSE,55)...) From b353eaa8c0c16a3e512558d869194d1ffc88ec8e Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Fri, 2 Apr 2021 21:50:13 +0900 Subject: [PATCH 10/17] Bump CI to Julia 1.6 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f06bd1c..c51ffa9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,7 +4,7 @@ on: push: pull_request: env: - JuliaVersion: 1.5 + JuliaVersion: 1.6 VulkanSDKVersion: 1.2.148.1 JULIA_GITHUB_ACTIONS_CI: ON jobs: From a739c6f2878014d53cc9cc68b3686ef5122d55dc Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Sat, 3 Apr 2021 01:57:44 +0900 Subject: [PATCH 11/17] Regenerate --- gen/generator.toml | 8 ++++++-- src/LibVulkan.jl | 18 +++++++++--------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/gen/generator.toml b/gen/generator.toml index 7a08efb..87e5cdf 100644 --- a/gen/generator.toml +++ b/gen/generator.toml @@ -1,14 +1,18 @@ [general] library_name = "libvulkan" -output_file_path = "./src/LibVulkan.jl" +output_file_path = "../src/LibVulkan.jl" module_name = "LibVulkan" export_symbol_prefixes = ["VK_", "Vk", "vk"] -prologue_file_path = "./gen/prologue.jl" +prologue_file_path = "./prologue.jl" epilogue_file_path = "" +auto_mutability = false +auto_mutability_blacklist = [] +auto_mutability_whitelist = [] + [codegen] opaque_as_mutable_struct = false \ No newline at end of file diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index b5585c4..fed5453 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -3171,7 +3171,7 @@ end function Base.getproperty(x::VkClearColorValue, f::Symbol) r = Ref{VkClearColorValue}(x) - ptr = Base.unsafe_convert(VkClearColorValue, r) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) GC.@preserve r unsafe_load(getproperty(ptr, f)) end @@ -3196,7 +3196,7 @@ end function Base.getproperty(x::VkClearValue, f::Symbol) r = Ref{VkClearValue}(x) - ptr = Base.unsafe_convert(VkClearValue, r) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) GC.@preserve r unsafe_load(getproperty(ptr, f)) end @@ -7050,7 +7050,7 @@ end function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) r = Ref{VkPerformanceCounterResultKHR}(x) - ptr = Base.unsafe_convert(VkPerformanceCounterResultKHR, r) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) GC.@preserve r unsafe_load(getproperty(ptr, f)) end @@ -7515,7 +7515,7 @@ end function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) r = Ref{VkPipelineExecutableStatisticValueKHR}(x) - ptr = Base.unsafe_convert(VkPipelineExecutableStatisticValueKHR, r) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) GC.@preserve r unsafe_load(getproperty(ptr, f)) end @@ -9199,7 +9199,7 @@ end function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) r = Ref{VkAccelerationStructureInstanceKHR}(x) - ptr = Base.unsafe_convert(VkAccelerationStructureInstanceKHR, r) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) GC.@preserve r unsafe_load(getproperty(ptr, f)) end @@ -9711,7 +9711,7 @@ end function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) r = Ref{VkPerformanceValueDataINTEL}(x) - ptr = Base.unsafe_convert(VkPerformanceValueDataINTEL, r) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) GC.@preserve r unsafe_load(getproperty(ptr, f)) end @@ -11385,7 +11385,7 @@ end function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(VkDeviceOrHostAddressKHR, r) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) GC.@preserve r unsafe_load(getproperty(ptr, f)) end @@ -11405,7 +11405,7 @@ end function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(VkDeviceOrHostAddressConstKHR, r) + ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) GC.@preserve r unsafe_load(getproperty(ptr, f)) end @@ -11493,7 +11493,7 @@ end function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(VkAccelerationStructureGeometryDataKHR, r) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) GC.@preserve r unsafe_load(getproperty(ptr, f)) end From 8d4874001cc45ae03f5cce9ed66fe5da9e673316 Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Sat, 3 Apr 2021 13:59:24 +0900 Subject: [PATCH 12/17] Enable and test `auto_mutability` --- gen/generator.toml | 2 +- src/LibVulkan.jl | 752 ++++++++++++++++++++++----------------------- 2 files changed, 377 insertions(+), 377 deletions(-) diff --git a/gen/generator.toml b/gen/generator.toml index 87e5cdf..d04e2ae 100644 --- a/gen/generator.toml +++ b/gen/generator.toml @@ -10,7 +10,7 @@ export_symbol_prefixes = ["VK_", "Vk", "vk"] prologue_file_path = "./prologue.jl" epilogue_file_path = "" -auto_mutability = false +auto_mutability = true auto_mutability_blacklist = [] auto_mutability_whitelist = [] diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index fed5453..e46ba00 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -2159,13 +2159,13 @@ struct VkBufferMemoryBarrier size::VkDeviceSize end -struct VkDispatchIndirectCommand +mutable struct VkDispatchIndirectCommand x::UInt32 y::UInt32 z::UInt32 end -struct VkDrawIndexedIndirectCommand +mutable struct VkDrawIndexedIndirectCommand indexCount::UInt32 instanceCount::UInt32 firstIndex::UInt32 @@ -2173,7 +2173,7 @@ struct VkDrawIndexedIndirectCommand firstInstance::UInt32 end -struct VkDrawIndirectCommand +mutable struct VkDrawIndirectCommand vertexCount::UInt32 instanceCount::UInt32 firstVertex::UInt32 @@ -2265,7 +2265,7 @@ struct VkImageFormatProperties maxResourceSize::VkDeviceSize end -struct VkInstanceCreateInfo +mutable struct VkInstanceCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkInstanceCreateFlags @@ -2496,7 +2496,7 @@ struct VkDeviceQueueCreateInfo pQueuePriorities::Ptr{Cfloat} end -struct VkDeviceCreateInfo +mutable struct VkDeviceCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDeviceCreateFlags @@ -2541,7 +2541,7 @@ struct VkMappedMemoryRange size::VkDeviceSize end -struct VkMemoryAllocateInfo +mutable struct VkMemoryAllocateInfo sType::VkStructureType pNext::Ptr{Cvoid} allocationSize::VkDeviceSize @@ -2624,25 +2624,25 @@ struct VkSparseImageMemoryRequirements imageMipTailStride::VkDeviceSize end -struct VkFenceCreateInfo +mutable struct VkFenceCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkFenceCreateFlags end -struct VkSemaphoreCreateInfo +mutable struct VkSemaphoreCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkSemaphoreCreateFlags end -struct VkEventCreateInfo +mutable struct VkEventCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkEventCreateFlags end -struct VkQueryPoolCreateInfo +mutable struct VkQueryPoolCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkQueryPoolCreateFlags @@ -2651,7 +2651,7 @@ struct VkQueryPoolCreateInfo pipelineStatistics::VkQueryPipelineStatisticFlags end -struct VkBufferCreateInfo +mutable struct VkBufferCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkBufferCreateFlags @@ -2662,7 +2662,7 @@ struct VkBufferCreateInfo pQueueFamilyIndices::Ptr{UInt32} end -struct VkBufferViewCreateInfo +mutable struct VkBufferViewCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkBufferViewCreateFlags @@ -2672,7 +2672,7 @@ struct VkBufferViewCreateInfo range::VkDeviceSize end -struct VkImageCreateInfo +mutable struct VkImageCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkImageCreateFlags @@ -2705,7 +2705,7 @@ struct VkComponentMapping a::VkComponentSwizzle end -struct VkImageViewCreateInfo +mutable struct VkImageViewCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkImageViewCreateFlags @@ -2716,7 +2716,7 @@ struct VkImageViewCreateInfo subresourceRange::VkImageSubresourceRange end -struct VkShaderModuleCreateInfo +mutable struct VkShaderModuleCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkShaderModuleCreateFlags @@ -2724,7 +2724,7 @@ struct VkShaderModuleCreateInfo pCode::Ptr{UInt32} end -struct VkPipelineCacheCreateInfo +mutable struct VkPipelineCacheCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineCacheCreateFlags @@ -2933,7 +2933,7 @@ struct VkPushConstantRange size::UInt32 end -struct VkPipelineLayoutCreateInfo +mutable struct VkPipelineLayoutCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineLayoutCreateFlags @@ -2943,7 +2943,7 @@ struct VkPipelineLayoutCreateInfo pPushConstantRanges::Ptr{VkPushConstantRange} end -struct VkSamplerCreateInfo +mutable struct VkSamplerCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkSamplerCreateFlags @@ -2993,7 +2993,7 @@ struct VkDescriptorPoolSize descriptorCount::UInt32 end -struct VkDescriptorPoolCreateInfo +mutable struct VkDescriptorPoolCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDescriptorPoolCreateFlags @@ -3002,7 +3002,7 @@ struct VkDescriptorPoolCreateInfo pPoolSizes::Ptr{VkDescriptorPoolSize} end -struct VkDescriptorSetAllocateInfo +mutable struct VkDescriptorSetAllocateInfo sType::VkStructureType pNext::Ptr{Cvoid} descriptorPool::VkDescriptorPool @@ -3018,7 +3018,7 @@ struct VkDescriptorSetLayoutBinding pImmutableSamplers::Ptr{VkSampler} end -struct VkDescriptorSetLayoutCreateInfo +mutable struct VkDescriptorSetLayoutCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDescriptorSetLayoutCreateFlags @@ -3056,7 +3056,7 @@ struct VkAttachmentReference layout::VkImageLayout end -struct VkFramebufferCreateInfo +mutable struct VkFramebufferCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkFramebufferCreateFlags @@ -3091,7 +3091,7 @@ struct VkSubpassDependency dependencyFlags::VkDependencyFlags end -struct VkRenderPassCreateInfo +mutable struct VkRenderPassCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkRenderPassCreateFlags @@ -3103,14 +3103,14 @@ struct VkRenderPassCreateInfo pDependencies::Ptr{VkSubpassDependency} end -struct VkCommandPoolCreateInfo +mutable struct VkCommandPoolCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkCommandPoolCreateFlags queueFamilyIndex::UInt32 end -struct VkCommandBufferAllocateInfo +mutable struct VkCommandBufferAllocateInfo sType::VkStructureType pNext::Ptr{Cvoid} commandPool::VkCommandPool @@ -3129,7 +3129,7 @@ struct VkCommandBufferInheritanceInfo pipelineStatistics::VkQueryPipelineStatisticFlags end -struct VkCommandBufferBeginInfo +mutable struct VkCommandBufferBeginInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkCommandBufferUsageFlags @@ -3239,7 +3239,7 @@ struct VkImageResolve extent::VkExtent3D end -struct VkRenderPassBeginInfo +mutable struct VkRenderPassBeginInfo sType::VkStructureType pNext::Ptr{Cvoid} renderPass::VkRenderPass @@ -4554,7 +4554,7 @@ end const VkExternalSemaphoreFeatureFlags = VkFlags -struct VkPhysicalDeviceSubgroupProperties +mutable struct VkPhysicalDeviceSubgroupProperties sType::VkStructureType pNext::Ptr{Cvoid} subgroupSize::UInt32 @@ -4579,7 +4579,7 @@ struct VkBindImageMemoryInfo memoryOffset::VkDeviceSize end -struct VkPhysicalDevice16BitStorageFeatures +mutable struct VkPhysicalDevice16BitStorageFeatures sType::VkStructureType pNext::Ptr{Cvoid} storageBuffer16BitAccess::VkBool32 @@ -4588,28 +4588,28 @@ struct VkPhysicalDevice16BitStorageFeatures storageInputOutput16::VkBool32 end -struct VkMemoryDedicatedRequirements +mutable struct VkMemoryDedicatedRequirements sType::VkStructureType pNext::Ptr{Cvoid} prefersDedicatedAllocation::VkBool32 requiresDedicatedAllocation::VkBool32 end -struct VkMemoryDedicatedAllocateInfo +mutable struct VkMemoryDedicatedAllocateInfo sType::VkStructureType pNext::Ptr{Cvoid} image::VkImage buffer::VkBuffer end -struct VkMemoryAllocateFlagsInfo +mutable struct VkMemoryAllocateFlagsInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkMemoryAllocateFlags deviceMask::UInt32 end -struct VkDeviceGroupRenderPassBeginInfo +mutable struct VkDeviceGroupRenderPassBeginInfo sType::VkStructureType pNext::Ptr{Cvoid} deviceMask::UInt32 @@ -4617,13 +4617,13 @@ struct VkDeviceGroupRenderPassBeginInfo pDeviceRenderAreas::Ptr{VkRect2D} end -struct VkDeviceGroupCommandBufferBeginInfo +mutable struct VkDeviceGroupCommandBufferBeginInfo sType::VkStructureType pNext::Ptr{Cvoid} deviceMask::UInt32 end -struct VkDeviceGroupSubmitInfo +mutable struct VkDeviceGroupSubmitInfo sType::VkStructureType pNext::Ptr{Cvoid} waitSemaphoreCount::UInt32 @@ -4634,21 +4634,21 @@ struct VkDeviceGroupSubmitInfo pSignalSemaphoreDeviceIndices::Ptr{UInt32} end -struct VkDeviceGroupBindSparseInfo +mutable struct VkDeviceGroupBindSparseInfo sType::VkStructureType pNext::Ptr{Cvoid} resourceDeviceIndex::UInt32 memoryDeviceIndex::UInt32 end -struct VkBindBufferMemoryDeviceGroupInfo +mutable struct VkBindBufferMemoryDeviceGroupInfo sType::VkStructureType pNext::Ptr{Cvoid} deviceIndexCount::UInt32 pDeviceIndices::Ptr{UInt32} end -struct VkBindImageMemoryDeviceGroupInfo +mutable struct VkBindImageMemoryDeviceGroupInfo sType::VkStructureType pNext::Ptr{Cvoid} deviceIndexCount::UInt32 @@ -4665,20 +4665,20 @@ struct VkPhysicalDeviceGroupProperties subsetAllocation::VkBool32 end -struct VkDeviceGroupDeviceCreateInfo +mutable struct VkDeviceGroupDeviceCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} physicalDeviceCount::UInt32 pPhysicalDevices::Ptr{VkPhysicalDevice} end -struct VkBufferMemoryRequirementsInfo2 +mutable struct VkBufferMemoryRequirementsInfo2 sType::VkStructureType pNext::Ptr{Cvoid} buffer::VkBuffer end -struct VkImageMemoryRequirementsInfo2 +mutable struct VkImageMemoryRequirementsInfo2 sType::VkStructureType pNext::Ptr{Cvoid} image::VkImage @@ -4690,7 +4690,7 @@ struct VkImageSparseMemoryRequirementsInfo2 image::VkImage end -struct VkMemoryRequirements2 +mutable struct VkMemoryRequirements2 sType::VkStructureType pNext::Ptr{Cvoid} memoryRequirements::VkMemoryRequirements @@ -4702,31 +4702,31 @@ struct VkSparseImageMemoryRequirements2 memoryRequirements::VkSparseImageMemoryRequirements end -struct VkPhysicalDeviceFeatures2 +mutable struct VkPhysicalDeviceFeatures2 sType::VkStructureType pNext::Ptr{Cvoid} features::VkPhysicalDeviceFeatures end -struct VkPhysicalDeviceProperties2 +mutable struct VkPhysicalDeviceProperties2 sType::VkStructureType pNext::Ptr{Cvoid} properties::VkPhysicalDeviceProperties end -struct VkFormatProperties2 +mutable struct VkFormatProperties2 sType::VkStructureType pNext::Ptr{Cvoid} formatProperties::VkFormatProperties end -struct VkImageFormatProperties2 +mutable struct VkImageFormatProperties2 sType::VkStructureType pNext::Ptr{Cvoid} imageFormatProperties::VkImageFormatProperties end -struct VkPhysicalDeviceImageFormatInfo2 +mutable struct VkPhysicalDeviceImageFormatInfo2 sType::VkStructureType pNext::Ptr{Cvoid} format::VkFormat @@ -4742,7 +4742,7 @@ struct VkQueueFamilyProperties2 queueFamilyProperties::VkQueueFamilyProperties end -struct VkPhysicalDeviceMemoryProperties2 +mutable struct VkPhysicalDeviceMemoryProperties2 sType::VkStructureType pNext::Ptr{Cvoid} memoryProperties::VkPhysicalDeviceMemoryProperties @@ -4764,7 +4764,7 @@ struct VkPhysicalDeviceSparseImageFormatInfo2 tiling::VkImageTiling end -struct VkPhysicalDevicePointClippingProperties +mutable struct VkPhysicalDevicePointClippingProperties sType::VkStructureType pNext::Ptr{Cvoid} pointClippingBehavior::VkPointClippingBehavior @@ -4776,26 +4776,26 @@ struct VkInputAttachmentAspectReference aspectMask::VkImageAspectFlags end -struct VkRenderPassInputAttachmentAspectCreateInfo +mutable struct VkRenderPassInputAttachmentAspectCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} aspectReferenceCount::UInt32 pAspectReferences::Ptr{VkInputAttachmentAspectReference} end -struct VkImageViewUsageCreateInfo +mutable struct VkImageViewUsageCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} usage::VkImageUsageFlags end -struct VkPipelineTessellationDomainOriginStateCreateInfo +mutable struct VkPipelineTessellationDomainOriginStateCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} domainOrigin::VkTessellationDomainOrigin end -struct VkRenderPassMultiviewCreateInfo +mutable struct VkRenderPassMultiviewCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} subpassCount::UInt32 @@ -4806,7 +4806,7 @@ struct VkRenderPassMultiviewCreateInfo pCorrelationMasks::Ptr{UInt32} end -struct VkPhysicalDeviceMultiviewFeatures +mutable struct VkPhysicalDeviceMultiviewFeatures sType::VkStructureType pNext::Ptr{Cvoid} multiview::VkBool32 @@ -4814,14 +4814,14 @@ struct VkPhysicalDeviceMultiviewFeatures multiviewTessellationShader::VkBool32 end -struct VkPhysicalDeviceMultiviewProperties +mutable struct VkPhysicalDeviceMultiviewProperties sType::VkStructureType pNext::Ptr{Cvoid} maxMultiviewViewCount::UInt32 maxMultiviewInstanceIndex::UInt32 end -struct VkPhysicalDeviceVariablePointersFeatures +mutable struct VkPhysicalDeviceVariablePointersFeatures sType::VkStructureType pNext::Ptr{Cvoid} variablePointersStorageBuffer::VkBool32 @@ -4830,19 +4830,19 @@ end const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures -struct VkPhysicalDeviceProtectedMemoryFeatures +mutable struct VkPhysicalDeviceProtectedMemoryFeatures sType::VkStructureType pNext::Ptr{Cvoid} protectedMemory::VkBool32 end -struct VkPhysicalDeviceProtectedMemoryProperties +mutable struct VkPhysicalDeviceProtectedMemoryProperties sType::VkStructureType pNext::Ptr{Cvoid} protectedNoFault::VkBool32 end -struct VkDeviceQueueInfo2 +mutable struct VkDeviceQueueInfo2 sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDeviceQueueCreateFlags @@ -4850,13 +4850,13 @@ struct VkDeviceQueueInfo2 queueIndex::UInt32 end -struct VkProtectedSubmitInfo +mutable struct VkProtectedSubmitInfo sType::VkStructureType pNext::Ptr{Cvoid} protectedSubmit::VkBool32 end -struct VkSamplerYcbcrConversionCreateInfo +mutable struct VkSamplerYcbcrConversionCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} format::VkFormat @@ -4869,31 +4869,31 @@ struct VkSamplerYcbcrConversionCreateInfo forceExplicitReconstruction::VkBool32 end -struct VkSamplerYcbcrConversionInfo +mutable struct VkSamplerYcbcrConversionInfo sType::VkStructureType pNext::Ptr{Cvoid} conversion::VkSamplerYcbcrConversion end -struct VkBindImagePlaneMemoryInfo +mutable struct VkBindImagePlaneMemoryInfo sType::VkStructureType pNext::Ptr{Cvoid} planeAspect::VkImageAspectFlagBits end -struct VkImagePlaneMemoryRequirementsInfo +mutable struct VkImagePlaneMemoryRequirementsInfo sType::VkStructureType pNext::Ptr{Cvoid} planeAspect::VkImageAspectFlagBits end -struct VkPhysicalDeviceSamplerYcbcrConversionFeatures +mutable struct VkPhysicalDeviceSamplerYcbcrConversionFeatures sType::VkStructureType pNext::Ptr{Cvoid} samplerYcbcrConversion::VkBool32 end -struct VkSamplerYcbcrConversionImageFormatProperties +mutable struct VkSamplerYcbcrConversionImageFormatProperties sType::VkStructureType pNext::Ptr{Cvoid} combinedImageSamplerDescriptorCount::UInt32 @@ -4908,7 +4908,7 @@ struct VkDescriptorUpdateTemplateEntry stride::Csize_t end -struct VkDescriptorUpdateTemplateCreateInfo +mutable struct VkDescriptorUpdateTemplateCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDescriptorUpdateTemplateCreateFlags @@ -4927,19 +4927,19 @@ struct VkExternalMemoryProperties compatibleHandleTypes::VkExternalMemoryHandleTypeFlags end -struct VkPhysicalDeviceExternalImageFormatInfo +mutable struct VkPhysicalDeviceExternalImageFormatInfo sType::VkStructureType pNext::Ptr{Cvoid} handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkExternalImageFormatProperties +mutable struct VkExternalImageFormatProperties sType::VkStructureType pNext::Ptr{Cvoid} externalMemoryProperties::VkExternalMemoryProperties end -struct VkPhysicalDeviceExternalBufferInfo +mutable struct VkPhysicalDeviceExternalBufferInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkBufferCreateFlags @@ -4947,13 +4947,13 @@ struct VkPhysicalDeviceExternalBufferInfo handleType::VkExternalMemoryHandleTypeFlagBits end -struct VkExternalBufferProperties +mutable struct VkExternalBufferProperties sType::VkStructureType pNext::Ptr{Cvoid} externalMemoryProperties::VkExternalMemoryProperties end -struct VkPhysicalDeviceIDProperties +mutable struct VkPhysicalDeviceIDProperties sType::VkStructureType pNext::Ptr{Cvoid} deviceUUID::NTuple{16, UInt8} @@ -4963,31 +4963,31 @@ struct VkPhysicalDeviceIDProperties deviceLUIDValid::VkBool32 end -struct VkExternalMemoryImageCreateInfo +mutable struct VkExternalMemoryImageCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} handleTypes::VkExternalMemoryHandleTypeFlags end -struct VkExternalMemoryBufferCreateInfo +mutable struct VkExternalMemoryBufferCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} handleTypes::VkExternalMemoryHandleTypeFlags end -struct VkExportMemoryAllocateInfo +mutable struct VkExportMemoryAllocateInfo sType::VkStructureType pNext::Ptr{Cvoid} handleTypes::VkExternalMemoryHandleTypeFlags end -struct VkPhysicalDeviceExternalFenceInfo +mutable struct VkPhysicalDeviceExternalFenceInfo sType::VkStructureType pNext::Ptr{Cvoid} handleType::VkExternalFenceHandleTypeFlagBits end -struct VkExternalFenceProperties +mutable struct VkExternalFenceProperties sType::VkStructureType pNext::Ptr{Cvoid} exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags @@ -4995,25 +4995,25 @@ struct VkExternalFenceProperties externalFenceFeatures::VkExternalFenceFeatureFlags end -struct VkExportFenceCreateInfo +mutable struct VkExportFenceCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} handleTypes::VkExternalFenceHandleTypeFlags end -struct VkExportSemaphoreCreateInfo +mutable struct VkExportSemaphoreCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} handleTypes::VkExternalSemaphoreHandleTypeFlags end -struct VkPhysicalDeviceExternalSemaphoreInfo +mutable struct VkPhysicalDeviceExternalSemaphoreInfo sType::VkStructureType pNext::Ptr{Cvoid} handleType::VkExternalSemaphoreHandleTypeFlagBits end -struct VkExternalSemaphoreProperties +mutable struct VkExternalSemaphoreProperties sType::VkStructureType pNext::Ptr{Cvoid} exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags @@ -5021,20 +5021,20 @@ struct VkExternalSemaphoreProperties externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags end -struct VkPhysicalDeviceMaintenance3Properties +mutable struct VkPhysicalDeviceMaintenance3Properties sType::VkStructureType pNext::Ptr{Cvoid} maxPerSetDescriptors::UInt32 maxMemoryAllocationSize::VkDeviceSize end -struct VkDescriptorSetLayoutSupport +mutable struct VkDescriptorSetLayoutSupport sType::VkStructureType pNext::Ptr{Cvoid} supported::VkBool32 end -struct VkPhysicalDeviceShaderDrawParametersFeatures +mutable struct VkPhysicalDeviceShaderDrawParametersFeatures sType::VkStructureType pNext::Ptr{Cvoid} shaderDrawParameters::VkBool32 @@ -5362,7 +5362,7 @@ end const VkSemaphoreWaitFlags = VkFlags -struct VkPhysicalDeviceVulkan11Features +mutable struct VkPhysicalDeviceVulkan11Features sType::VkStructureType pNext::Ptr{Cvoid} storageBuffer16BitAccess::VkBool32 @@ -5379,7 +5379,7 @@ struct VkPhysicalDeviceVulkan11Features shaderDrawParameters::VkBool32 end -struct VkPhysicalDeviceVulkan11Properties +mutable struct VkPhysicalDeviceVulkan11Properties sType::VkStructureType pNext::Ptr{Cvoid} deviceUUID::NTuple{16, UInt8} @@ -5399,7 +5399,7 @@ struct VkPhysicalDeviceVulkan11Properties maxMemoryAllocationSize::VkDeviceSize end -struct VkPhysicalDeviceVulkan12Features +mutable struct VkPhysicalDeviceVulkan12Features sType::VkStructureType pNext::Ptr{Cvoid} samplerMirrorClampToEdge::VkBool32 @@ -5458,7 +5458,7 @@ struct VkConformanceVersion patch::UInt8 end -struct VkPhysicalDeviceVulkan12Properties +mutable struct VkPhysicalDeviceVulkan12Properties sType::VkStructureType pNext::Ptr{Cvoid} driverID::VkDriverId @@ -5515,7 +5515,7 @@ struct VkPhysicalDeviceVulkan12Properties framebufferIntegerColorSampleCounts::VkSampleCountFlags end -struct VkImageFormatListCreateInfo +mutable struct VkImageFormatListCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} viewFormatCount::UInt32 @@ -5573,7 +5573,7 @@ struct VkSubpassDependency2 viewOffset::Int32 end -struct VkRenderPassCreateInfo2 +mutable struct VkRenderPassCreateInfo2 sType::VkStructureType pNext::Ptr{Cvoid} flags::VkRenderPassCreateFlags @@ -5587,18 +5587,18 @@ struct VkRenderPassCreateInfo2 pCorrelatedViewMasks::Ptr{UInt32} end -struct VkSubpassBeginInfo +mutable struct VkSubpassBeginInfo sType::VkStructureType pNext::Ptr{Cvoid} contents::VkSubpassContents end -struct VkSubpassEndInfo +mutable struct VkSubpassEndInfo sType::VkStructureType pNext::Ptr{Cvoid} end -struct VkPhysicalDevice8BitStorageFeatures +mutable struct VkPhysicalDevice8BitStorageFeatures sType::VkStructureType pNext::Ptr{Cvoid} storageBuffer8BitAccess::VkBool32 @@ -5606,7 +5606,7 @@ struct VkPhysicalDevice8BitStorageFeatures storagePushConstant8::VkBool32 end -struct VkPhysicalDeviceDriverProperties +mutable struct VkPhysicalDeviceDriverProperties sType::VkStructureType pNext::Ptr{Cvoid} driverID::VkDriverId @@ -5615,21 +5615,21 @@ struct VkPhysicalDeviceDriverProperties conformanceVersion::VkConformanceVersion end -struct VkPhysicalDeviceShaderAtomicInt64Features +mutable struct VkPhysicalDeviceShaderAtomicInt64Features sType::VkStructureType pNext::Ptr{Cvoid} shaderBufferInt64Atomics::VkBool32 shaderSharedInt64Atomics::VkBool32 end -struct VkPhysicalDeviceShaderFloat16Int8Features +mutable struct VkPhysicalDeviceShaderFloat16Int8Features sType::VkStructureType pNext::Ptr{Cvoid} shaderFloat16::VkBool32 shaderInt8::VkBool32 end -struct VkPhysicalDeviceFloatControlsProperties +mutable struct VkPhysicalDeviceFloatControlsProperties sType::VkStructureType pNext::Ptr{Cvoid} denormBehaviorIndependence::VkShaderFloatControlsIndependence @@ -5651,14 +5651,14 @@ struct VkPhysicalDeviceFloatControlsProperties shaderRoundingModeRTZFloat64::VkBool32 end -struct VkDescriptorSetLayoutBindingFlagsCreateInfo +mutable struct VkDescriptorSetLayoutBindingFlagsCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} bindingCount::UInt32 pBindingFlags::Ptr{VkDescriptorBindingFlags} end -struct VkPhysicalDeviceDescriptorIndexingFeatures +mutable struct VkPhysicalDeviceDescriptorIndexingFeatures sType::VkStructureType pNext::Ptr{Cvoid} shaderInputAttachmentArrayDynamicIndexing::VkBool32 @@ -5683,7 +5683,7 @@ struct VkPhysicalDeviceDescriptorIndexingFeatures runtimeDescriptorArray::VkBool32 end -struct VkPhysicalDeviceDescriptorIndexingProperties +mutable struct VkPhysicalDeviceDescriptorIndexingProperties sType::VkStructureType pNext::Ptr{Cvoid} maxUpdateAfterBindDescriptorsInAllPools::UInt32 @@ -5711,20 +5711,20 @@ struct VkPhysicalDeviceDescriptorIndexingProperties maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 end -struct VkDescriptorSetVariableDescriptorCountAllocateInfo +mutable struct VkDescriptorSetVariableDescriptorCountAllocateInfo sType::VkStructureType pNext::Ptr{Cvoid} descriptorSetCount::UInt32 pDescriptorCounts::Ptr{UInt32} end -struct VkDescriptorSetVariableDescriptorCountLayoutSupport +mutable struct VkDescriptorSetVariableDescriptorCountLayoutSupport sType::VkStructureType pNext::Ptr{Cvoid} maxVariableDescriptorCount::UInt32 end -struct VkSubpassDescriptionDepthStencilResolve +mutable struct VkSubpassDescriptionDepthStencilResolve sType::VkStructureType pNext::Ptr{Cvoid} depthResolveMode::VkResolveModeFlagBits @@ -5732,7 +5732,7 @@ struct VkSubpassDescriptionDepthStencilResolve pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} end -struct VkPhysicalDeviceDepthStencilResolveProperties +mutable struct VkPhysicalDeviceDepthStencilResolveProperties sType::VkStructureType pNext::Ptr{Cvoid} supportedDepthResolveModes::VkResolveModeFlags @@ -5741,32 +5741,32 @@ struct VkPhysicalDeviceDepthStencilResolveProperties independentResolve::VkBool32 end -struct VkPhysicalDeviceScalarBlockLayoutFeatures +mutable struct VkPhysicalDeviceScalarBlockLayoutFeatures sType::VkStructureType pNext::Ptr{Cvoid} scalarBlockLayout::VkBool32 end -struct VkImageStencilUsageCreateInfo +mutable struct VkImageStencilUsageCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} stencilUsage::VkImageUsageFlags end -struct VkSamplerReductionModeCreateInfo +mutable struct VkSamplerReductionModeCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} reductionMode::VkSamplerReductionMode end -struct VkPhysicalDeviceSamplerFilterMinmaxProperties +mutable struct VkPhysicalDeviceSamplerFilterMinmaxProperties sType::VkStructureType pNext::Ptr{Cvoid} filterMinmaxSingleComponentFormats::VkBool32 filterMinmaxImageComponentMapping::VkBool32 end -struct VkPhysicalDeviceVulkanMemoryModelFeatures +mutable struct VkPhysicalDeviceVulkanMemoryModelFeatures sType::VkStructureType pNext::Ptr{Cvoid} vulkanMemoryModel::VkBool32 @@ -5774,7 +5774,7 @@ struct VkPhysicalDeviceVulkanMemoryModelFeatures vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 end -struct VkPhysicalDeviceImagelessFramebufferFeatures +mutable struct VkPhysicalDeviceImagelessFramebufferFeatures sType::VkStructureType pNext::Ptr{Cvoid} imagelessFramebuffer::VkBool32 @@ -5792,77 +5792,77 @@ struct VkFramebufferAttachmentImageInfo pViewFormats::Ptr{VkFormat} end -struct VkFramebufferAttachmentsCreateInfo +mutable struct VkFramebufferAttachmentsCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} attachmentImageInfoCount::UInt32 pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} end -struct VkRenderPassAttachmentBeginInfo +mutable struct VkRenderPassAttachmentBeginInfo sType::VkStructureType pNext::Ptr{Cvoid} attachmentCount::UInt32 pAttachments::Ptr{VkImageView} end -struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures +mutable struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures sType::VkStructureType pNext::Ptr{Cvoid} uniformBufferStandardLayout::VkBool32 end -struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures +mutable struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures sType::VkStructureType pNext::Ptr{Cvoid} shaderSubgroupExtendedTypes::VkBool32 end -struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures +mutable struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures sType::VkStructureType pNext::Ptr{Cvoid} separateDepthStencilLayouts::VkBool32 end -struct VkAttachmentReferenceStencilLayout +mutable struct VkAttachmentReferenceStencilLayout sType::VkStructureType pNext::Ptr{Cvoid} stencilLayout::VkImageLayout end -struct VkAttachmentDescriptionStencilLayout +mutable struct VkAttachmentDescriptionStencilLayout sType::VkStructureType pNext::Ptr{Cvoid} stencilInitialLayout::VkImageLayout stencilFinalLayout::VkImageLayout end -struct VkPhysicalDeviceHostQueryResetFeatures +mutable struct VkPhysicalDeviceHostQueryResetFeatures sType::VkStructureType pNext::Ptr{Cvoid} hostQueryReset::VkBool32 end -struct VkPhysicalDeviceTimelineSemaphoreFeatures +mutable struct VkPhysicalDeviceTimelineSemaphoreFeatures sType::VkStructureType pNext::Ptr{Cvoid} timelineSemaphore::VkBool32 end -struct VkPhysicalDeviceTimelineSemaphoreProperties +mutable struct VkPhysicalDeviceTimelineSemaphoreProperties sType::VkStructureType pNext::Ptr{Cvoid} maxTimelineSemaphoreValueDifference::UInt64 end -struct VkSemaphoreTypeCreateInfo +mutable struct VkSemaphoreTypeCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} semaphoreType::VkSemaphoreType initialValue::UInt64 end -struct VkTimelineSemaphoreSubmitInfo +mutable struct VkTimelineSemaphoreSubmitInfo sType::VkStructureType pNext::Ptr{Cvoid} waitSemaphoreValueCount::UInt32 @@ -5880,14 +5880,14 @@ struct VkSemaphoreWaitInfo pValues::Ptr{UInt64} end -struct VkSemaphoreSignalInfo +mutable struct VkSemaphoreSignalInfo sType::VkStructureType pNext::Ptr{Cvoid} semaphore::VkSemaphore value::UInt64 end -struct VkPhysicalDeviceBufferDeviceAddressFeatures +mutable struct VkPhysicalDeviceBufferDeviceAddressFeatures sType::VkStructureType pNext::Ptr{Cvoid} bufferDeviceAddress::VkBool32 @@ -5895,25 +5895,25 @@ struct VkPhysicalDeviceBufferDeviceAddressFeatures bufferDeviceAddressMultiDevice::VkBool32 end -struct VkBufferDeviceAddressInfo +mutable struct VkBufferDeviceAddressInfo sType::VkStructureType pNext::Ptr{Cvoid} buffer::VkBuffer end -struct VkBufferOpaqueCaptureAddressCreateInfo +mutable struct VkBufferOpaqueCaptureAddressCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} opaqueCaptureAddress::UInt64 end -struct VkMemoryOpaqueCaptureAddressAllocateInfo +mutable struct VkMemoryOpaqueCaptureAddressAllocateInfo sType::VkStructureType pNext::Ptr{Cvoid} opaqueCaptureAddress::UInt64 end -struct VkDeviceMemoryOpaqueCaptureAddressInfo +mutable struct VkDeviceMemoryOpaqueCaptureAddressInfo sType::VkStructureType pNext::Ptr{Cvoid} memory::VkDeviceMemory @@ -6186,7 +6186,7 @@ struct VkSwapchainCreateInfoKHR oldSwapchain::VkSwapchainKHR end -struct VkPresentInfoKHR +mutable struct VkPresentInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} waitSemaphoreCount::UInt32 @@ -6197,13 +6197,13 @@ struct VkPresentInfoKHR pResults::Ptr{VkResult} end -struct VkImageSwapchainCreateInfoKHR +mutable struct VkImageSwapchainCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} swapchain::VkSwapchainKHR end -struct VkBindImageMemorySwapchainInfoKHR +mutable struct VkBindImageMemorySwapchainInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} swapchain::VkSwapchainKHR @@ -6220,14 +6220,14 @@ struct VkAcquireNextImageInfoKHR deviceMask::UInt32 end -struct VkDeviceGroupPresentCapabilitiesKHR +mutable struct VkDeviceGroupPresentCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} presentMask::NTuple{32, UInt32} modes::VkDeviceGroupPresentModeFlagsKHR end -struct VkDeviceGroupPresentInfoKHR +mutable struct VkDeviceGroupPresentInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} swapchainCount::UInt32 @@ -6235,7 +6235,7 @@ struct VkDeviceGroupPresentInfoKHR mode::VkDeviceGroupPresentModeFlagBitsKHR end -struct VkDeviceGroupSwapchainCreateInfoKHR +mutable struct VkDeviceGroupSwapchainCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} modes::VkDeviceGroupPresentModeFlagsKHR @@ -6340,7 +6340,7 @@ struct VkDisplayModeParametersKHR refreshRate::UInt32 end -struct VkDisplayModeCreateInfoKHR +mutable struct VkDisplayModeCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDisplayModeCreateFlagsKHR @@ -6379,7 +6379,7 @@ struct VkDisplayPropertiesKHR persistentContent::VkBool32 end -struct VkDisplaySurfaceCreateInfoKHR +mutable struct VkDisplaySurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDisplaySurfaceCreateFlagsKHR @@ -6448,7 +6448,7 @@ function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurf ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkDisplayPresentInfoKHR +mutable struct VkDisplayPresentInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} srcRect::VkRect2D @@ -6646,7 +6646,7 @@ const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo -struct VkImportMemoryFdInfoKHR +mutable struct VkImportMemoryFdInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} handleType::VkExternalMemoryHandleTypeFlagBits @@ -6659,7 +6659,7 @@ struct VkMemoryFdPropertiesKHR memoryTypeBits::UInt32 end -struct VkMemoryGetFdInfoKHR +mutable struct VkMemoryGetFdInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} memory::VkDeviceMemory @@ -6708,7 +6708,7 @@ const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo -struct VkImportSemaphoreFdInfoKHR +mutable struct VkImportSemaphoreFdInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} semaphore::VkSemaphore @@ -6717,7 +6717,7 @@ struct VkImportSemaphoreFdInfoKHR fd::Cint end -struct VkSemaphoreGetFdInfoKHR +mutable struct VkSemaphoreGetFdInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} semaphore::VkSemaphore @@ -6740,7 +6740,7 @@ function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) end -struct VkPhysicalDevicePushDescriptorPropertiesKHR +mutable struct VkPhysicalDevicePushDescriptorPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} maxPushDescriptors::UInt32 @@ -6779,7 +6779,7 @@ struct VkPresentRegionKHR pRectangles::Ptr{VkRectLayerKHR} end -struct VkPresentRegionsKHR +mutable struct VkPresentRegionsKHR sType::VkStructureType pNext::Ptr{Cvoid} swapchainCount::UInt32 @@ -6874,7 +6874,7 @@ function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) end -struct VkSharedPresentSurfaceCapabilitiesKHR +mutable struct VkSharedPresentSurfaceCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} sharedPresentSupportedUsageFlags::VkImageUsageFlags @@ -6914,7 +6914,7 @@ const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo -struct VkImportFenceFdInfoKHR +mutable struct VkImportFenceFdInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} fence::VkFence @@ -6923,7 +6923,7 @@ struct VkImportFenceFdInfoKHR fd::Cint end -struct VkFenceGetFdInfoKHR +mutable struct VkFenceGetFdInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} fence::VkFence @@ -6995,14 +6995,14 @@ end const VkAcquireProfilingLockFlagsKHR = VkFlags -struct VkPhysicalDevicePerformanceQueryFeaturesKHR +mutable struct VkPhysicalDevicePerformanceQueryFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} performanceCounterQueryPools::VkBool32 performanceCounterMultipleQueryPools::VkBool32 end -struct VkPhysicalDevicePerformanceQueryPropertiesKHR +mutable struct VkPhysicalDevicePerformanceQueryPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} allowCommandBufferQueryCopies::VkBool32 @@ -7058,14 +7058,14 @@ function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end -struct VkAcquireProfilingLockInfoKHR +mutable struct VkAcquireProfilingLockInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkAcquireProfilingLockFlagsKHR timeout::UInt64 end -struct VkPerformanceQuerySubmitInfoKHR +mutable struct VkPerformanceQuerySubmitInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} counterPassIndex::UInt32 @@ -7123,7 +7123,7 @@ struct VkPhysicalDeviceSurfaceInfo2KHR surface::VkSurfaceKHR end -struct VkSurfaceCapabilities2KHR +mutable struct VkSurfaceCapabilities2KHR sType::VkStructureType pNext::Ptr{Cvoid} surfaceCapabilities::VkSurfaceCapabilitiesKHR @@ -7173,14 +7173,14 @@ struct VkDisplayModeProperties2KHR displayModeProperties::VkDisplayModePropertiesKHR end -struct VkDisplayPlaneInfo2KHR +mutable struct VkDisplayPlaneInfo2KHR sType::VkStructureType pNext::Ptr{Cvoid} mode::VkDisplayModeKHR planeIndex::UInt32 end -struct VkDisplayPlaneCapabilities2KHR +mutable struct VkDisplayPlaneCapabilities2KHR sType::VkStructureType pNext::Ptr{Cvoid} capabilities::VkDisplayPlaneCapabilitiesKHR @@ -7348,7 +7348,7 @@ const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatur const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features -struct VkPhysicalDeviceShaderClockFeaturesKHR +mutable struct VkPhysicalDeviceShaderClockFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} shaderSubgroupClock::VkBool32 @@ -7417,7 +7417,7 @@ end const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures -struct VkSurfaceProtectedCapabilitiesKHR +mutable struct VkSurfaceProtectedCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} supportsProtected::VkBool32 @@ -7473,7 +7473,7 @@ end VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 end -struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR +mutable struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} pipelineExecutableInfo::VkBool32 @@ -7629,7 +7629,7 @@ const VkDebugReportFlagsEXT = VkFlags # typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} -struct VkDebugReportCallbackCreateInfoEXT +mutable struct VkDebugReportCallbackCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDebugReportFlagsEXT @@ -7667,13 +7667,13 @@ end VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 end -struct VkPipelineRasterizationStateRasterizationOrderAMD +mutable struct VkPipelineRasterizationStateRasterizationOrderAMD sType::VkStructureType pNext::Ptr{Cvoid} rasterizationOrder::VkRasterizationOrderAMD end -struct VkDebugMarkerObjectNameInfoEXT +mutable struct VkDebugMarkerObjectNameInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} objectType::VkDebugReportObjectTypeEXT @@ -7681,7 +7681,7 @@ struct VkDebugMarkerObjectNameInfoEXT pObjectName::Ptr{Cchar} end -struct VkDebugMarkerObjectTagInfoEXT +mutable struct VkDebugMarkerObjectTagInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} objectType::VkDebugReportObjectTypeEXT @@ -7691,7 +7691,7 @@ struct VkDebugMarkerObjectTagInfoEXT pTag::Ptr{Cvoid} end -struct VkDebugMarkerMarkerInfoEXT +mutable struct VkDebugMarkerMarkerInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} pMarkerName::Ptr{Cchar} @@ -7738,19 +7738,19 @@ function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) end -struct VkDedicatedAllocationImageCreateInfoNV +mutable struct VkDedicatedAllocationImageCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} dedicatedAllocation::VkBool32 end -struct VkDedicatedAllocationBufferCreateInfoNV +mutable struct VkDedicatedAllocationBufferCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} dedicatedAllocation::VkBool32 end -struct VkDedicatedAllocationMemoryAllocateInfoNV +mutable struct VkDedicatedAllocationMemoryAllocateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} image::VkImage @@ -7759,14 +7759,14 @@ end const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT +mutable struct VkPhysicalDeviceTransformFeedbackFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} transformFeedback::VkBool32 geometryStreams::VkBool32 end -struct VkPhysicalDeviceTransformFeedbackPropertiesEXT +mutable struct VkPhysicalDeviceTransformFeedbackPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} maxTransformFeedbackStreams::UInt32 @@ -7781,7 +7781,7 @@ struct VkPhysicalDeviceTransformFeedbackPropertiesEXT transformFeedbackDraw::VkBool32 end -struct VkPipelineRasterizationStateStreamCreateInfoEXT +mutable struct VkPipelineRasterizationStateStreamCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineRasterizationStateStreamCreateFlagsEXT @@ -7836,7 +7836,7 @@ function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstan ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) end -struct VkImageViewHandleInfoNVX +mutable struct VkImageViewHandleInfoNVX sType::VkStructureType pNext::Ptr{Cvoid} imageView::VkImageView @@ -7844,7 +7844,7 @@ struct VkImageViewHandleInfoNVX sampler::VkSampler end -struct VkImageViewAddressPropertiesNVX +mutable struct VkImageViewAddressPropertiesNVX sType::VkStructureType pNext::Ptr{Cvoid} deviceAddress::VkDeviceAddress @@ -7883,7 +7883,7 @@ function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBu ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -struct VkTextureLODGatherFormatPropertiesAMD +mutable struct VkTextureLODGatherFormatPropertiesAMD sType::VkStructureType pNext::Ptr{Cvoid} supportsTextureGatherLODBiasAMD::VkBool32 @@ -7904,7 +7904,7 @@ struct VkShaderResourceUsageAMD scratchMemUsageInBytes::Csize_t end -struct VkShaderStatisticsInfoAMD +mutable struct VkShaderStatisticsInfoAMD shaderStageMask::VkShaderStageFlags resourceUsage::VkShaderResourceUsageAMD numPhysicalVgprs::UInt32 @@ -7922,7 +7922,7 @@ function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) end -struct VkPhysicalDeviceCornerSampledImageFeaturesNV +mutable struct VkPhysicalDeviceCornerSampledImageFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} cornerSampledImage::VkBool32 @@ -7947,7 +7947,7 @@ end const VkExternalMemoryFeatureFlagsNV = VkFlags -struct VkExternalImageFormatPropertiesNV +mutable struct VkExternalImageFormatPropertiesNV imageFormatProperties::VkImageFormatProperties externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV @@ -7962,13 +7962,13 @@ function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, form ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) end -struct VkExternalMemoryImageCreateInfoNV +mutable struct VkExternalMemoryImageCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} handleTypes::VkExternalMemoryHandleTypeFlagsNV end -struct VkExportMemoryAllocateInfoNV +mutable struct VkExportMemoryAllocateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} handleTypes::VkExternalMemoryHandleTypeFlagsNV @@ -7980,26 +7980,26 @@ end VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 end -struct VkValidationFlagsEXT +mutable struct VkValidationFlagsEXT sType::VkStructureType pNext::Ptr{Cvoid} disabledValidationCheckCount::UInt32 pDisabledValidationChecks::Ptr{VkValidationCheckEXT} end -struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT +mutable struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} textureCompressionASTC_HDR::VkBool32 end -struct VkImageViewASTCDecodeModeEXT +mutable struct VkImageViewASTCDecodeModeEXT sType::VkStructureType pNext::Ptr{Cvoid} decodeMode::VkFormat end -struct VkPhysicalDeviceASTCDecodeFeaturesEXT +mutable struct VkPhysicalDeviceASTCDecodeFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} decodeModeSharedExponent::VkBool32 @@ -8012,7 +8012,7 @@ end const VkConditionalRenderingFlagsEXT = VkFlags -struct VkConditionalRenderingBeginInfoEXT +mutable struct VkConditionalRenderingBeginInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} buffer::VkBuffer @@ -8020,14 +8020,14 @@ struct VkConditionalRenderingBeginInfoEXT flags::VkConditionalRenderingFlagsEXT end -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT +mutable struct VkPhysicalDeviceConditionalRenderingFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} conditionalRendering::VkBool32 inheritedConditionalRendering::VkBool32 end -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT +mutable struct VkCommandBufferInheritanceConditionalRenderingInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} conditionalRenderingEnable::VkBool32 @@ -8054,7 +8054,7 @@ struct VkViewportWScalingNV ycoeff::Cfloat end -struct VkPipelineViewportWScalingStateCreateInfoNV +mutable struct VkPipelineViewportWScalingStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} viewportWScalingEnable::VkBool32 @@ -8085,7 +8085,7 @@ end const VkSurfaceCounterFlagsEXT = VkFlags -struct VkSurfaceCapabilities2EXT +mutable struct VkSurfaceCapabilities2EXT sType::VkStructureType pNext::Ptr{Cvoid} minImageCount::UInt32 @@ -8126,25 +8126,25 @@ end VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 end -struct VkDisplayPowerInfoEXT +mutable struct VkDisplayPowerInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} powerState::VkDisplayPowerStateEXT end -struct VkDeviceEventInfoEXT +mutable struct VkDeviceEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} deviceEvent::VkDeviceEventTypeEXT end -struct VkDisplayEventInfoEXT +mutable struct VkDisplayEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} displayEvent::VkDisplayEventTypeEXT end -struct VkSwapchainCounterCreateInfoEXT +mutable struct VkSwapchainCounterCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} surfaceCounters::VkSurfaceCounterFlagsEXT @@ -8182,7 +8182,7 @@ function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) end -struct VkRefreshCycleDurationGOOGLE +mutable struct VkRefreshCycleDurationGOOGLE refreshDuration::UInt64 end @@ -8199,7 +8199,7 @@ struct VkPresentTimeGOOGLE desiredPresentTime::UInt64 end -struct VkPresentTimesInfoGOOGLE +mutable struct VkPresentTimesInfoGOOGLE sType::VkStructureType pNext::Ptr{Cvoid} swapchainCount::UInt32 @@ -8222,7 +8222,7 @@ function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimin ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) end -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX +mutable struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX sType::VkStructureType pNext::Ptr{Cvoid} perViewPositionAllComponents::VkBool32 @@ -8249,7 +8249,7 @@ struct VkViewportSwizzleNV w::VkViewportCoordinateSwizzleNV end -struct VkPipelineViewportSwizzleStateCreateInfoNV +mutable struct VkPipelineViewportSwizzleStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineViewportSwizzleStateCreateFlagsNV @@ -8265,13 +8265,13 @@ end const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT +mutable struct VkPhysicalDeviceDiscardRectanglePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} maxDiscardRectangles::UInt32 end -struct VkPipelineDiscardRectangleStateCreateInfoEXT +mutable struct VkPipelineDiscardRectangleStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineDiscardRectangleStateCreateFlagsEXT @@ -8297,7 +8297,7 @@ end const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +mutable struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} primitiveOverestimationSize::Cfloat @@ -8311,7 +8311,7 @@ struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT conservativeRasterizationPostDepthCoverage::VkBool32 end -struct VkPipelineRasterizationConservativeStateCreateInfoEXT +mutable struct VkPipelineRasterizationConservativeStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT @@ -8321,13 +8321,13 @@ end const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +mutable struct VkPhysicalDeviceDepthClipEnableFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} depthClipEnable::VkBool32 end -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT +mutable struct VkPipelineRasterizationDepthClipStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT @@ -8402,7 +8402,7 @@ struct VkDebugUtilsObjectNameInfoEXT pObjectName::Ptr{Cchar} end -struct VkDebugUtilsMessengerCallbackDataEXT +mutable struct VkDebugUtilsMessengerCallbackDataEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDebugUtilsMessengerCallbackDataFlagsEXT @@ -8421,7 +8421,7 @@ end # typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} -struct VkDebugUtilsMessengerCreateInfoEXT +mutable struct VkDebugUtilsMessengerCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDebugUtilsMessengerCreateFlagsEXT @@ -8431,7 +8431,7 @@ struct VkDebugUtilsMessengerCreateInfoEXT pUserData::Ptr{Cvoid} end -struct VkDebugUtilsObjectTagInfoEXT +mutable struct VkDebugUtilsObjectTagInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} objectType::VkObjectType @@ -8535,14 +8535,14 @@ const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties -struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT +mutable struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} inlineUniformBlock::VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 end -struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT +mutable struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} maxInlineUniformBlockSize::UInt32 @@ -8552,14 +8552,14 @@ struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 end -struct VkWriteDescriptorSetInlineUniformBlockEXT +mutable struct VkWriteDescriptorSetInlineUniformBlockEXT sType::VkStructureType pNext::Ptr{Cvoid} dataSize::UInt32 pData::Ptr{Cvoid} end -struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT +mutable struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} maxInlineUniformBlockBindings::UInt32 @@ -8589,7 +8589,7 @@ struct VkSubpassSampleLocationsEXT sampleLocationsInfo::VkSampleLocationsInfoEXT end -struct VkRenderPassSampleLocationsBeginInfoEXT +mutable struct VkRenderPassSampleLocationsBeginInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} attachmentInitialSampleLocationsCount::UInt32 @@ -8598,14 +8598,14 @@ struct VkRenderPassSampleLocationsBeginInfoEXT pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} end -struct VkPipelineSampleLocationsStateCreateInfoEXT +mutable struct VkPipelineSampleLocationsStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} sampleLocationsEnable::VkBool32 sampleLocationsInfo::VkSampleLocationsInfoEXT end -struct VkPhysicalDeviceSampleLocationsPropertiesEXT +mutable struct VkPhysicalDeviceSampleLocationsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} sampleLocationSampleCounts::VkSampleCountFlags @@ -8615,7 +8615,7 @@ struct VkPhysicalDeviceSampleLocationsPropertiesEXT variableSampleLocations::VkBool32 end -struct VkMultisamplePropertiesEXT +mutable struct VkMultisamplePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} maxSampleLocationGridSize::VkExtent2D @@ -8644,13 +8644,13 @@ end VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT +mutable struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} advancedBlendCoherentOperations::VkBool32 end -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT +mutable struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} advancedBlendMaxColorAttachments::UInt32 @@ -8661,7 +8661,7 @@ struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT advancedBlendAllOperations::VkBool32 end -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT +mutable struct VkPipelineColorBlendAdvancedStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} srcPremultiplied::VkBool32 @@ -8671,7 +8671,7 @@ end const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags -struct VkPipelineCoverageToColorStateCreateInfoNV +mutable struct VkPipelineCoverageToColorStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineCoverageToColorStateCreateFlagsNV @@ -8689,7 +8689,7 @@ end const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags -struct VkPipelineCoverageModulationStateCreateInfoNV +mutable struct VkPipelineCoverageModulationStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineCoverageModulationStateCreateFlagsNV @@ -8699,14 +8699,14 @@ struct VkPipelineCoverageModulationStateCreateInfoNV pCoverageModulationTable::Ptr{Cfloat} end -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV +mutable struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} shaderSMCount::UInt32 shaderWarpsPerSM::UInt32 end -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV +mutable struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} shaderSMBuiltins::VkBool32 @@ -8718,14 +8718,14 @@ struct VkDrmFormatModifierPropertiesEXT drmFormatModifierTilingFeatures::VkFormatFeatureFlags end -struct VkDrmFormatModifierPropertiesListEXT +mutable struct VkDrmFormatModifierPropertiesListEXT sType::VkStructureType pNext::Ptr{Cvoid} drmFormatModifierCount::UInt32 pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} end -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +mutable struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} drmFormatModifier::UInt64 @@ -8734,14 +8734,14 @@ struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT pQueueFamilyIndices::Ptr{UInt32} end -struct VkImageDrmFormatModifierListCreateInfoEXT +mutable struct VkImageDrmFormatModifierListCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} drmFormatModifierCount::UInt32 pDrmFormatModifiers::Ptr{UInt64} end -struct VkImageDrmFormatModifierExplicitCreateInfoEXT +mutable struct VkImageDrmFormatModifierExplicitCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} drmFormatModifier::UInt64 @@ -8749,7 +8749,7 @@ struct VkImageDrmFormatModifierExplicitCreateInfoEXT pPlaneLayouts::Ptr{VkSubresourceLayout} end -struct VkImageDrmFormatModifierPropertiesEXT +mutable struct VkImageDrmFormatModifierPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} drmFormatModifier::UInt64 @@ -8774,7 +8774,7 @@ end const VkValidationCacheCreateFlagsEXT = VkFlags -struct VkValidationCacheCreateInfoEXT +mutable struct VkValidationCacheCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkValidationCacheCreateFlagsEXT @@ -8782,7 +8782,7 @@ struct VkValidationCacheCreateInfoEXT pInitialData::Ptr{Cvoid} end -struct VkShaderModuleValidationCacheCreateInfoEXT +mutable struct VkShaderModuleValidationCacheCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} validationCache::VkValidationCacheEXT @@ -8863,7 +8863,7 @@ struct VkShadingRatePaletteNV pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} end -struct VkPipelineViewportShadingRateImageStateCreateInfoNV +mutable struct VkPipelineViewportShadingRateImageStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} shadingRateImageEnable::VkBool32 @@ -8871,14 +8871,14 @@ struct VkPipelineViewportShadingRateImageStateCreateInfoNV pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} end -struct VkPhysicalDeviceShadingRateImageFeaturesNV +mutable struct VkPhysicalDeviceShadingRateImageFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} shadingRateImage::VkBool32 shadingRateCoarseSampleOrder::VkBool32 end -struct VkPhysicalDeviceShadingRateImagePropertiesNV +mutable struct VkPhysicalDeviceShadingRateImagePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} shadingRateTexelSize::VkExtent2D @@ -8899,7 +8899,7 @@ struct VkCoarseSampleOrderCustomNV pSampleLocations::Ptr{VkCoarseSampleLocationNV} end -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV +mutable struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} sampleOrderType::VkCoarseSampleOrderTypeNV @@ -9118,7 +9118,7 @@ struct VkAccelerationStructureInfoNV pGeometries::Ptr{VkGeometryNV} end -struct VkAccelerationStructureCreateInfoNV +mutable struct VkAccelerationStructureCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} compactedSize::VkDeviceSize @@ -9137,7 +9137,7 @@ end const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR -struct VkWriteDescriptorSetAccelerationStructureKHR +mutable struct VkWriteDescriptorSetAccelerationStructureKHR sType::VkStructureType pNext::Ptr{Cvoid} accelerationStructureCount::UInt32 @@ -9146,14 +9146,14 @@ end const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR -struct VkAccelerationStructureMemoryRequirementsInfoNV +mutable struct VkAccelerationStructureMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} type::VkAccelerationStructureMemoryRequirementsTypeNV accelerationStructure::VkAccelerationStructureNV end -struct VkPhysicalDeviceRayTracingPropertiesNV +mutable struct VkPhysicalDeviceRayTracingPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} shaderGroupHandleSize::UInt32 @@ -9166,13 +9166,13 @@ struct VkPhysicalDeviceRayTracingPropertiesNV maxDescriptorSetAccelerationStructures::UInt32 end -struct VkTransformMatrixKHR +mutable struct VkTransformMatrixKHR matrix::NTuple{3, NTuple{4, Cfloat}} end const VkTransformMatrixNV = VkTransformMatrixKHR -struct VkAabbPositionsKHR +mutable struct VkAabbPositionsKHR minX::Cfloat minY::Cfloat minZ::Cfloat @@ -9337,25 +9337,25 @@ function vkCompileDeferredNV(device, pipeline, shader) ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) end -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV +mutable struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} representativeFragmentTest::VkBool32 end -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV +mutable struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} representativeFragmentTestEnable::VkBool32 end -struct VkPhysicalDeviceImageViewImageFormatInfoEXT +mutable struct VkPhysicalDeviceImageViewImageFormatInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} imageViewType::VkImageViewType end -struct VkFilterCubicImageViewImageFormatPropertiesEXT +mutable struct VkFilterCubicImageViewImageFormatPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} filterCubic::VkBool32 @@ -9370,26 +9370,26 @@ end VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 end -struct VkDeviceQueueGlobalPriorityCreateInfoEXT +mutable struct VkDeviceQueueGlobalPriorityCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} globalPriority::VkQueueGlobalPriorityEXT end -struct VkImportMemoryHostPointerInfoEXT +mutable struct VkImportMemoryHostPointerInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} handleType::VkExternalMemoryHandleTypeFlagBits pHostPointer::Ptr{Cvoid} end -struct VkMemoryHostPointerPropertiesEXT +mutable struct VkMemoryHostPointerPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} memoryTypeBits::UInt32 end -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT +mutable struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} minImportedHostPointerAlignment::VkDeviceSize @@ -9417,7 +9417,7 @@ end const VkPipelineCompilerControlFlagsAMD = VkFlags -struct VkPipelineCompilerControlCreateInfoAMD +mutable struct VkPipelineCompilerControlCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} compilerControlFlags::VkPipelineCompilerControlFlagsAMD @@ -9453,7 +9453,7 @@ function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, p ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) end -struct VkPhysicalDeviceShaderCorePropertiesAMD +mutable struct VkPhysicalDeviceShaderCorePropertiesAMD sType::VkStructureType pNext::Ptr{Cvoid} shaderEngineCount::UInt32 @@ -9479,13 +9479,13 @@ end VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 end -struct VkDeviceMemoryOverallocationCreateInfoAMD +mutable struct VkDeviceMemoryOverallocationCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} overallocationBehavior::VkMemoryOverallocationBehaviorAMD end -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +mutable struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} maxVertexAttribDivisor::UInt32 @@ -9496,14 +9496,14 @@ struct VkVertexInputBindingDivisorDescriptionEXT divisor::UInt32 end -struct VkPipelineVertexInputDivisorStateCreateInfoEXT +mutable struct VkPipelineVertexInputDivisorStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} vertexBindingDivisorCount::UInt32 pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} end -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT +mutable struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} vertexAttributeInstanceRateDivisor::VkBool32 @@ -9524,7 +9524,7 @@ struct VkPipelineCreationFeedbackEXT duration::UInt64 end -struct VkPipelineCreationFeedbackCreateInfoEXT +mutable struct VkPipelineCreationFeedbackCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} @@ -9532,21 +9532,21 @@ struct VkPipelineCreationFeedbackCreateInfoEXT pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} end -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV +mutable struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} computeDerivativeGroupQuads::VkBool32 computeDerivativeGroupLinear::VkBool32 end -struct VkPhysicalDeviceMeshShaderFeaturesNV +mutable struct VkPhysicalDeviceMeshShaderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} taskShader::VkBool32 meshShader::VkBool32 end -struct VkPhysicalDeviceMeshShaderPropertiesNV +mutable struct VkPhysicalDeviceMeshShaderPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} maxDrawMeshTasksCount::UInt32 @@ -9564,7 +9564,7 @@ struct VkPhysicalDeviceMeshShaderPropertiesNV meshOutputPerPrimitiveGranularity::UInt32 end -struct VkDrawMeshTasksIndirectCommandNV +mutable struct VkDrawMeshTasksIndirectCommandNV taskCount::UInt32 firstTask::UInt32 end @@ -9593,26 +9593,26 @@ function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countB ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV +mutable struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} fragmentShaderBarycentric::VkBool32 end -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV +mutable struct VkPhysicalDeviceShaderImageFootprintFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} imageFootprint::VkBool32 end -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV +mutable struct VkPipelineViewportExclusiveScissorStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} exclusiveScissorCount::UInt32 pExclusiveScissors::Ptr{VkRect2D} end -struct VkPhysicalDeviceExclusiveScissorFeaturesNV +mutable struct VkPhysicalDeviceExclusiveScissorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} exclusiveScissor::VkBool32 @@ -9626,7 +9626,7 @@ function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclus ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -struct VkQueueFamilyCheckpointPropertiesNV +mutable struct VkQueueFamilyCheckpointPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} checkpointExecutionStageMask::VkPipelineStageFlags @@ -9655,7 +9655,7 @@ function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) end -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL +mutable struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL sType::VkStructureType pNext::Ptr{Cvoid} shaderIntegerFunctions2::VkBool32 @@ -9719,18 +9719,18 @@ function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end -struct VkPerformanceValueINTEL +mutable struct VkPerformanceValueINTEL type::VkPerformanceValueTypeINTEL data::VkPerformanceValueDataINTEL end -struct VkInitializePerformanceApiInfoINTEL +mutable struct VkInitializePerformanceApiInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} pUserData::Ptr{Cvoid} end -struct VkQueryPoolPerformanceQueryCreateInfoINTEL +mutable struct VkQueryPoolPerformanceQueryCreateInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} performanceCountersSampling::VkQueryPoolSamplingModeINTEL @@ -9738,19 +9738,19 @@ end const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL -struct VkPerformanceMarkerInfoINTEL +mutable struct VkPerformanceMarkerInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} marker::UInt64 end -struct VkPerformanceStreamMarkerInfoINTEL +mutable struct VkPerformanceStreamMarkerInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} marker::UInt32 end -struct VkPerformanceOverrideInfoINTEL +mutable struct VkPerformanceOverrideInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} type::VkPerformanceOverrideTypeINTEL @@ -9758,7 +9758,7 @@ struct VkPerformanceOverrideInfoINTEL parameter::UInt64 end -struct VkPerformanceConfigurationAcquireInfoINTEL +mutable struct VkPerformanceConfigurationAcquireInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} type::VkPerformanceConfigurationTypeINTEL @@ -9836,7 +9836,7 @@ function vkGetPerformanceParameterINTEL(device, parameter, pValue) ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) end -struct VkPhysicalDevicePCIBusInfoPropertiesEXT +mutable struct VkPhysicalDevicePCIBusInfoPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} pciDomain::UInt32 @@ -9845,13 +9845,13 @@ struct VkPhysicalDevicePCIBusInfoPropertiesEXT pciFunction::UInt32 end -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD +mutable struct VkDisplayNativeHdrSurfaceCapabilitiesAMD sType::VkStructureType pNext::Ptr{Cvoid} localDimmingSupport::VkBool32 end -struct VkSwapchainDisplayNativeHdrCreateInfoAMD +mutable struct VkSwapchainDisplayNativeHdrCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} localDimmingEnable::VkBool32 @@ -9865,7 +9865,7 @@ function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) end -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT +mutable struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} fragmentDensityMap::VkBool32 @@ -9873,7 +9873,7 @@ struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT fragmentDensityMapNonSubsampledImages::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT +mutable struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} minFragmentDensityTexelSize::VkExtent2D @@ -9881,7 +9881,7 @@ struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT fragmentDensityInvocations::VkBool32 end -struct VkRenderPassFragmentDensityMapCreateInfoEXT +mutable struct VkRenderPassFragmentDensityMapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} fragmentDensityMapAttachment::VkAttachmentReference @@ -9889,14 +9889,14 @@ end const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures -struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT +mutable struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} subgroupSizeControl::VkBool32 computeFullSubgroups::VkBool32 end -struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT +mutable struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} minSubgroupSize::UInt32 @@ -9905,7 +9905,7 @@ struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT requiredSubgroupSizeStages::VkShaderStageFlags end -struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT +mutable struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} requiredSubgroupSize::UInt32 @@ -9917,45 +9917,45 @@ end const VkShaderCorePropertiesFlagsAMD = VkFlags -struct VkPhysicalDeviceShaderCoreProperties2AMD +mutable struct VkPhysicalDeviceShaderCoreProperties2AMD sType::VkStructureType pNext::Ptr{Cvoid} shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD activeComputeUnitCount::UInt32 end -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD +mutable struct VkPhysicalDeviceCoherentMemoryFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} deviceCoherentMemory::VkBool32 end -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT +mutable struct VkPhysicalDeviceMemoryBudgetPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} heapBudget::NTuple{16, VkDeviceSize} heapUsage::NTuple{16, VkDeviceSize} end -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT +mutable struct VkPhysicalDeviceMemoryPriorityFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} memoryPriority::VkBool32 end -struct VkMemoryPriorityAllocateInfoEXT +mutable struct VkMemoryPriorityAllocateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} priority::Cfloat end -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV +mutable struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} dedicatedAllocationImageAliasing::VkBool32 end -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +mutable struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} bufferDeviceAddress::VkBool32 @@ -9967,7 +9967,7 @@ const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAdd const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo -struct VkBufferDeviceAddressCreateInfoEXT +mutable struct VkBufferDeviceAddressCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} deviceAddress::VkDeviceAddress @@ -10034,7 +10034,7 @@ end VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 end -struct VkValidationFeaturesEXT +mutable struct VkValidationFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} enabledValidationFeatureCount::UInt32 @@ -10079,14 +10079,14 @@ struct VkCooperativeMatrixPropertiesNV scope::VkScopeNV end -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV +mutable struct VkPhysicalDeviceCooperativeMatrixFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} cooperativeMatrix::VkBool32 cooperativeMatrixRobustBufferAccess::VkBool32 end -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV +mutable struct VkPhysicalDeviceCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} cooperativeMatrixSupportedStages::VkShaderStageFlags @@ -10108,13 +10108,13 @@ end const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV +mutable struct VkPhysicalDeviceCoverageReductionModeFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} coverageReductionMode::VkBool32 end -struct VkPipelineCoverageReductionStateCreateInfoNV +mutable struct VkPipelineCoverageReductionStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineCoverageReductionStateCreateFlagsNV @@ -10138,7 +10138,7 @@ function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physi ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT +mutable struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} fragmentShaderSampleInterlock::VkBool32 @@ -10146,7 +10146,7 @@ struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT fragmentShaderShadingRateInterlock::VkBool32 end -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT +mutable struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} ycbcrImageArrays::VkBool32 @@ -10154,7 +10154,7 @@ end const VkHeadlessSurfaceCreateFlagsEXT = VkFlags -struct VkHeadlessSurfaceCreateInfoEXT +mutable struct VkHeadlessSurfaceCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkHeadlessSurfaceCreateFlagsEXT @@ -10176,7 +10176,7 @@ end VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 end -struct VkPhysicalDeviceLineRasterizationFeaturesEXT +mutable struct VkPhysicalDeviceLineRasterizationFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} rectangularLines::VkBool32 @@ -10187,13 +10187,13 @@ struct VkPhysicalDeviceLineRasterizationFeaturesEXT stippledSmoothLines::VkBool32 end -struct VkPhysicalDeviceLineRasterizationPropertiesEXT +mutable struct VkPhysicalDeviceLineRasterizationPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} lineSubPixelPrecisionBits::UInt32 end -struct VkPipelineRasterizationLineStateCreateInfoEXT +mutable struct VkPipelineRasterizationLineStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} lineRasterizationMode::VkLineRasterizationModeEXT @@ -10210,7 +10210,7 @@ function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePat ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT +mutable struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} shaderBufferFloat32Atomics::VkBool32 @@ -10237,13 +10237,13 @@ function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) end -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT +mutable struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} indexTypeUint8::VkBool32 end -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT +mutable struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} extendedDynamicState::VkBool32 @@ -10345,7 +10345,7 @@ function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFail ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) end -struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT +mutable struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} shaderDemoteToHelperInvocation::VkBool32 @@ -10383,7 +10383,7 @@ end const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags -struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV +mutable struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} maxGraphicsShaderGroupCount::UInt32 @@ -10397,7 +10397,7 @@ struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV minIndirectCommandsBufferOffsetAlignment::UInt32 end -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV +mutable struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} deviceGeneratedCommands::VkBool32 @@ -10412,7 +10412,7 @@ struct VkGraphicsShaderGroupCreateInfoNV pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} end -struct VkGraphicsPipelineShaderGroupsCreateInfoNV +mutable struct VkGraphicsPipelineShaderGroupsCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} groupCount::UInt32 @@ -10421,23 +10421,23 @@ struct VkGraphicsPipelineShaderGroupsCreateInfoNV pPipelines::Ptr{VkPipeline} end -struct VkBindShaderGroupIndirectCommandNV +mutable struct VkBindShaderGroupIndirectCommandNV groupIndex::UInt32 end -struct VkBindIndexBufferIndirectCommandNV +mutable struct VkBindIndexBufferIndirectCommandNV bufferAddress::VkDeviceAddress size::UInt32 indexType::VkIndexType end -struct VkBindVertexBufferIndirectCommandNV +mutable struct VkBindVertexBufferIndirectCommandNV bufferAddress::VkDeviceAddress size::UInt32 stride::UInt32 end -struct VkSetStateFlagsIndirectCommandNV +mutable struct VkSetStateFlagsIndirectCommandNV data::UInt32 end @@ -10464,7 +10464,7 @@ struct VkIndirectCommandsLayoutTokenNV pIndexTypeValues::Ptr{UInt32} end -struct VkIndirectCommandsLayoutCreateInfoNV +mutable struct VkIndirectCommandsLayoutCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} flags::VkIndirectCommandsLayoutUsageFlagsNV @@ -10475,7 +10475,7 @@ struct VkIndirectCommandsLayoutCreateInfoNV pStreamStrides::Ptr{UInt32} end -struct VkGeneratedCommandsInfoNV +mutable struct VkGeneratedCommandsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} pipelineBindPoint::VkPipelineBindPoint @@ -10493,7 +10493,7 @@ struct VkGeneratedCommandsInfoNV sequencesIndexOffset::VkDeviceSize end -struct VkGeneratedCommandsMemoryRequirementsInfoNV +mutable struct VkGeneratedCommandsMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} pipelineBindPoint::VkPipelineBindPoint @@ -10550,13 +10550,13 @@ function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllo ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +mutable struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} texelBufferAlignment::VkBool32 end -struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT +mutable struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} storageTexelBufferOffsetAlignmentBytes::VkDeviceSize @@ -10565,20 +10565,20 @@ struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 end -struct VkRenderPassTransformBeginInfoQCOM +mutable struct VkRenderPassTransformBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} transform::VkSurfaceTransformFlagBitsKHR end -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM +mutable struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} transform::VkSurfaceTransformFlagBitsKHR renderArea::VkRect2D end -struct VkPhysicalDeviceRobustness2FeaturesEXT +mutable struct VkPhysicalDeviceRobustness2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} robustBufferAccess2::VkBool32 @@ -10586,27 +10586,27 @@ struct VkPhysicalDeviceRobustness2FeaturesEXT nullDescriptor::VkBool32 end -struct VkPhysicalDeviceRobustness2PropertiesEXT +mutable struct VkPhysicalDeviceRobustness2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} robustStorageBufferAccessSizeAlignment::VkDeviceSize robustUniformBufferAccessSizeAlignment::VkDeviceSize end -struct VkSamplerCustomBorderColorCreateInfoEXT +mutable struct VkSamplerCustomBorderColorCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} customBorderColor::VkClearColorValue format::VkFormat end -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT +mutable struct VkPhysicalDeviceCustomBorderColorPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} maxCustomBorderColorSamplers::UInt32 end -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT +mutable struct VkPhysicalDeviceCustomBorderColorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} customBorderColors::VkBool32 @@ -10623,19 +10623,19 @@ end const VkPrivateDataSlotCreateFlagsEXT = VkFlags -struct VkPhysicalDevicePrivateDataFeaturesEXT +mutable struct VkPhysicalDevicePrivateDataFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} privateData::VkBool32 end -struct VkDevicePrivateDataCreateInfoEXT +mutable struct VkDevicePrivateDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} privateDataSlotRequestCount::UInt32 end -struct VkPrivateDataSlotCreateInfoEXT +mutable struct VkPrivateDataSlotCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPrivateDataSlotCreateFlagsEXT @@ -10673,7 +10673,7 @@ function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT +mutable struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} pipelineCreationCacheControl::VkBool32 @@ -10688,25 +10688,25 @@ end const VkDeviceDiagnosticsConfigFlagsNV = VkFlags -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV +mutable struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} diagnosticsConfig::VkBool32 end -struct VkDeviceDiagnosticsConfigCreateInfoNV +mutable struct VkDeviceDiagnosticsConfigCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDeviceDiagnosticsConfigFlagsNV end -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +mutable struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} fragmentDensityMapDeferred::VkBool32 end -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +mutable struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} subsampledLoads::VkBool32 @@ -10715,13 +10715,13 @@ struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT maxDescriptorSetSubsampledSamplers::UInt32 end -struct VkPhysicalDeviceImageRobustnessFeaturesEXT +mutable struct VkPhysicalDeviceImageRobustnessFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} robustImageAccess::VkBool32 end -struct VkPhysicalDevice4444FormatsFeaturesEXT +mutable struct VkPhysicalDevice4444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} formatA4R4G4B4::VkBool32 @@ -10732,7 +10732,7 @@ const VkAndroidSurfaceCreateFlagsKHR = VkFlags const ANativeWindow = Cvoid -struct VkAndroidSurfaceCreateInfoKHR +mutable struct VkAndroidSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkAndroidSurfaceCreateFlagsKHR @@ -10747,20 +10747,20 @@ function vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) ccall((:vkCreateAndroidSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkAndroidSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkAndroidHardwareBufferUsageANDROID +mutable struct VkAndroidHardwareBufferUsageANDROID sType::VkStructureType pNext::Ptr{Cvoid} androidHardwareBufferUsage::UInt64 end -struct VkAndroidHardwareBufferPropertiesANDROID +mutable struct VkAndroidHardwareBufferPropertiesANDROID sType::VkStructureType pNext::Ptr{Cvoid} allocationSize::VkDeviceSize memoryTypeBits::UInt32 end -struct VkAndroidHardwareBufferFormatPropertiesANDROID +mutable struct VkAndroidHardwareBufferFormatPropertiesANDROID sType::VkStructureType pNext::Ptr{Cvoid} format::VkFormat @@ -10775,19 +10775,19 @@ end const AHardwareBuffer = Cvoid -struct VkImportAndroidHardwareBufferInfoANDROID +mutable struct VkImportAndroidHardwareBufferInfoANDROID sType::VkStructureType pNext::Ptr{Cvoid} buffer::Ptr{AHardwareBuffer} end -struct VkMemoryGetAndroidHardwareBufferInfoANDROID +mutable struct VkMemoryGetAndroidHardwareBufferInfoANDROID sType::VkStructureType pNext::Ptr{Cvoid} memory::VkDeviceMemory end -struct VkExternalFormatANDROID +mutable struct VkExternalFormatANDROID sType::VkStructureType pNext::Ptr{Cvoid} externalFormat::UInt64 @@ -10811,7 +10811,7 @@ end const VkImagePipeSurfaceCreateFlagsFUCHSIA = VkFlags -struct VkImagePipeSurfaceCreateInfoFUCHSIA +mutable struct VkImagePipeSurfaceCreateInfoFUCHSIA sType::VkStructureType pNext::Ptr{Cvoid} flags::VkImagePipeSurfaceCreateFlagsFUCHSIA @@ -10828,7 +10828,7 @@ end const VkIOSSurfaceCreateFlagsMVK = VkFlags -struct VkIOSSurfaceCreateInfoMVK +mutable struct VkIOSSurfaceCreateInfoMVK sType::VkStructureType pNext::Ptr{Cvoid} flags::VkIOSSurfaceCreateFlagsMVK @@ -10845,7 +10845,7 @@ end const VkMacOSSurfaceCreateFlagsMVK = VkFlags -struct VkMacOSSurfaceCreateInfoMVK +mutable struct VkMacOSSurfaceCreateInfoMVK sType::VkStructureType pNext::Ptr{Cvoid} flags::VkMacOSSurfaceCreateFlagsMVK @@ -10864,7 +10864,7 @@ const CAMetalLayer = Cvoid const VkMetalSurfaceCreateFlagsEXT = VkFlags -struct VkMetalSurfaceCreateInfoEXT +mutable struct VkMetalSurfaceCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkMetalSurfaceCreateFlagsEXT @@ -10881,7 +10881,7 @@ end const VkViSurfaceCreateFlagsNN = VkFlags -struct VkViSurfaceCreateInfoNN +mutable struct VkViSurfaceCreateInfoNN sType::VkStructureType pNext::Ptr{Cvoid} flags::VkViSurfaceCreateFlagsNN @@ -10902,7 +10902,7 @@ const wl_display = Cvoid const wl_surface = Cvoid -struct VkWaylandSurfaceCreateInfoKHR +mutable struct VkWaylandSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkWaylandSurfaceCreateFlagsKHR @@ -10928,7 +10928,7 @@ end const VkWin32SurfaceCreateFlagsKHR = VkFlags -struct VkWin32SurfaceCreateInfoKHR +mutable struct VkWin32SurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkWin32SurfaceCreateFlagsKHR @@ -10952,7 +10952,7 @@ function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFam ccall((:vkGetPhysicalDeviceWin32PresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) end -struct VkImportMemoryWin32HandleInfoKHR +mutable struct VkImportMemoryWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} handleType::VkExternalMemoryHandleTypeFlagBits @@ -10960,7 +10960,7 @@ struct VkImportMemoryWin32HandleInfoKHR name::Cint end -struct VkExportMemoryWin32HandleInfoKHR +mutable struct VkExportMemoryWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} pAttributes::Ptr{Cint} @@ -10974,7 +10974,7 @@ struct VkMemoryWin32HandlePropertiesKHR memoryTypeBits::UInt32 end -struct VkMemoryGetWin32HandleInfoKHR +mutable struct VkMemoryGetWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} memory::VkDeviceMemory @@ -10997,7 +10997,7 @@ function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemory ccall((:vkGetMemoryWin32HandlePropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) end -struct VkWin32KeyedMutexAcquireReleaseInfoKHR +mutable struct VkWin32KeyedMutexAcquireReleaseInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} acquireCount::UInt32 @@ -11009,7 +11009,7 @@ struct VkWin32KeyedMutexAcquireReleaseInfoKHR pReleaseKeys::Ptr{UInt64} end -struct VkImportSemaphoreWin32HandleInfoKHR +mutable struct VkImportSemaphoreWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} semaphore::VkSemaphore @@ -11019,7 +11019,7 @@ struct VkImportSemaphoreWin32HandleInfoKHR name::Cint end -struct VkExportSemaphoreWin32HandleInfoKHR +mutable struct VkExportSemaphoreWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} pAttributes::Ptr{Cint} @@ -11027,7 +11027,7 @@ struct VkExportSemaphoreWin32HandleInfoKHR name::Cint end -struct VkD3D12FenceSubmitInfoKHR +mutable struct VkD3D12FenceSubmitInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} waitSemaphoreValuesCount::UInt32 @@ -11036,7 +11036,7 @@ struct VkD3D12FenceSubmitInfoKHR pSignalSemaphoreValues::Ptr{UInt64} end -struct VkSemaphoreGetWin32HandleInfoKHR +mutable struct VkSemaphoreGetWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} semaphore::VkSemaphore @@ -11059,7 +11059,7 @@ function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) ccall((:vkGetSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) end -struct VkImportFenceWin32HandleInfoKHR +mutable struct VkImportFenceWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} fence::VkFence @@ -11069,7 +11069,7 @@ struct VkImportFenceWin32HandleInfoKHR name::Cint end -struct VkExportFenceWin32HandleInfoKHR +mutable struct VkExportFenceWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} pAttributes::Ptr{Cint} @@ -11077,7 +11077,7 @@ struct VkExportFenceWin32HandleInfoKHR name::Cint end -struct VkFenceGetWin32HandleInfoKHR +mutable struct VkFenceGetWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} fence::VkFence @@ -11100,14 +11100,14 @@ function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) ccall((:vkGetFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) end -struct VkImportMemoryWin32HandleInfoNV +mutable struct VkImportMemoryWin32HandleInfoNV sType::VkStructureType pNext::Ptr{Cvoid} handleType::VkExternalMemoryHandleTypeFlagsNV handle::Cint end -struct VkExportMemoryWin32HandleInfoNV +mutable struct VkExportMemoryWin32HandleInfoNV sType::VkStructureType pNext::Ptr{Cvoid} pAttributes::Ptr{Cint} @@ -11122,7 +11122,7 @@ function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle) ccall((:vkGetMemoryWin32HandleNV, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{Cint}), device, memory, handleType, pHandle) end -struct VkWin32KeyedMutexAcquireReleaseInfoNV +mutable struct VkWin32KeyedMutexAcquireReleaseInfoNV sType::VkStructureType pNext::Ptr{Cvoid} acquireCount::UInt32 @@ -11142,19 +11142,19 @@ end VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 2147483647 end -struct VkSurfaceFullScreenExclusiveInfoEXT +mutable struct VkSurfaceFullScreenExclusiveInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} fullScreenExclusive::VkFullScreenExclusiveEXT end -struct VkSurfaceCapabilitiesFullScreenExclusiveEXT +mutable struct VkSurfaceCapabilitiesFullScreenExclusiveEXT sType::VkStructureType pNext::Ptr{Cvoid} fullScreenExclusiveSupported::VkBool32 end -struct VkSurfaceFullScreenExclusiveWin32InfoEXT +mutable struct VkSurfaceFullScreenExclusiveWin32InfoEXT sType::VkStructureType pNext::Ptr{Cvoid} hmonitor::Cint @@ -11194,7 +11194,7 @@ end const VkXcbSurfaceCreateFlagsKHR = VkFlags -struct VkXcbSurfaceCreateInfoKHR +mutable struct VkXcbSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkXcbSurfaceCreateFlagsKHR @@ -11220,7 +11220,7 @@ end const VkXlibSurfaceCreateFlagsKHR = VkFlags -struct VkXlibSurfaceCreateInfoKHR +mutable struct VkXlibSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkXlibSurfaceCreateFlagsKHR @@ -11246,7 +11246,7 @@ end const VkDirectFBSurfaceCreateFlagsEXT = VkFlags -struct VkDirectFBSurfaceCreateInfoEXT +mutable struct VkDirectFBSurfaceCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDirectFBSurfaceCreateFlagsEXT @@ -11288,7 +11288,7 @@ end const VkStreamDescriptorSurfaceCreateFlagsGGP = VkFlags -struct VkStreamDescriptorSurfaceCreateInfoGGP +mutable struct VkStreamDescriptorSurfaceCreateInfoGGP sType::VkStructureType pNext::Ptr{Cvoid} flags::VkStreamDescriptorSurfaceCreateFlagsGGP @@ -11303,7 +11303,7 @@ function vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, p ccall((:vkCreateStreamDescriptorSurfaceGGP, libvulkan), VkResult, (VkInstance, Ptr{VkStreamDescriptorSurfaceCreateInfoGGP}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -struct VkPresentFrameTokenGGP +mutable struct VkPresentFrameTokenGGP sType::VkStructureType pNext::Ptr{Cvoid} frameToken::Cint @@ -11313,7 +11313,7 @@ const VkDeferredOperationKHR_T = Cvoid const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} -struct VkDeferredOperationInfoKHR +mutable struct VkDeferredOperationInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} operationHandle::VkDeferredOperationKHR @@ -11455,7 +11455,7 @@ struct VkRayTracingPipelineCreateInfoKHR basePipelineIndex::Int32 end -struct VkAccelerationStructureGeometryTrianglesDataKHR +mutable struct VkAccelerationStructureGeometryTrianglesDataKHR sType::VkStructureType pNext::Ptr{Cvoid} vertexFormat::VkFormat @@ -11466,14 +11466,14 @@ struct VkAccelerationStructureGeometryTrianglesDataKHR transformData::VkDeviceOrHostAddressConstKHR end -struct VkAccelerationStructureGeometryAabbsDataKHR +mutable struct VkAccelerationStructureGeometryAabbsDataKHR sType::VkStructureType pNext::Ptr{Cvoid} data::VkDeviceOrHostAddressConstKHR stride::VkDeviceSize end -struct VkAccelerationStructureGeometryInstancesDataKHR +mutable struct VkAccelerationStructureGeometryInstancesDataKHR sType::VkStructureType pNext::Ptr{Cvoid} arrayOfPointers::VkBool32 @@ -11534,7 +11534,7 @@ struct VkAccelerationStructureCreateGeometryTypeInfoKHR allowsTransforms::VkBool32 end -struct VkAccelerationStructureCreateInfoKHR +mutable struct VkAccelerationStructureCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} compactedSize::VkDeviceSize @@ -11545,7 +11545,7 @@ struct VkAccelerationStructureCreateInfoKHR deviceAddress::VkDeviceAddress end -struct VkAccelerationStructureMemoryRequirementsInfoKHR +mutable struct VkAccelerationStructureMemoryRequirementsInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} type::VkAccelerationStructureMemoryRequirementsTypeKHR @@ -11553,7 +11553,7 @@ struct VkAccelerationStructureMemoryRequirementsInfoKHR accelerationStructure::VkAccelerationStructureKHR end -struct VkPhysicalDeviceRayTracingFeaturesKHR +mutable struct VkPhysicalDeviceRayTracingFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} rayTracing::VkBool32 @@ -11567,7 +11567,7 @@ struct VkPhysicalDeviceRayTracingFeaturesKHR rayTracingPrimitiveCulling::VkBool32 end -struct VkPhysicalDeviceRayTracingPropertiesKHR +mutable struct VkPhysicalDeviceRayTracingPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} shaderGroupHandleSize::UInt32 @@ -11581,13 +11581,13 @@ struct VkPhysicalDeviceRayTracingPropertiesKHR shaderGroupHandleCaptureReplaySize::UInt32 end -struct VkAccelerationStructureDeviceAddressInfoKHR +mutable struct VkAccelerationStructureDeviceAddressInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} accelerationStructure::VkAccelerationStructureKHR end -struct VkAccelerationStructureVersionKHR +mutable struct VkAccelerationStructureVersionKHR sType::VkStructureType pNext::Ptr{Cvoid} versionData::Ptr{UInt8} @@ -11600,13 +11600,13 @@ struct VkStridedBufferRegionKHR size::VkDeviceSize end -struct VkTraceRaysIndirectCommandKHR +mutable struct VkTraceRaysIndirectCommandKHR width::UInt32 height::UInt32 depth::UInt32 end -struct VkCopyAccelerationStructureToMemoryInfoKHR +mutable struct VkCopyAccelerationStructureToMemoryInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} src::VkAccelerationStructureKHR @@ -11614,7 +11614,7 @@ struct VkCopyAccelerationStructureToMemoryInfoKHR mode::VkCopyAccelerationStructureModeKHR end -struct VkCopyMemoryToAccelerationStructureInfoKHR +mutable struct VkCopyMemoryToAccelerationStructureInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} src::VkDeviceOrHostAddressConstKHR @@ -11622,7 +11622,7 @@ struct VkCopyMemoryToAccelerationStructureInfoKHR mode::VkCopyAccelerationStructureModeKHR end -struct VkCopyAccelerationStructureInfoKHR +mutable struct VkCopyAccelerationStructureInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} src::VkAccelerationStructureKHR From c4c4d7927f35b9de12ac279edef4e063d5b63e56 Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Sat, 3 Apr 2021 20:46:57 +0900 Subject: [PATCH 13/17] Disable auto_mutability --- gen/generator.toml | 2 +- src/LibVulkan.jl | 752 ++++++++++++++++++++++----------------------- 2 files changed, 377 insertions(+), 377 deletions(-) diff --git a/gen/generator.toml b/gen/generator.toml index d04e2ae..87e5cdf 100644 --- a/gen/generator.toml +++ b/gen/generator.toml @@ -10,7 +10,7 @@ export_symbol_prefixes = ["VK_", "Vk", "vk"] prologue_file_path = "./prologue.jl" epilogue_file_path = "" -auto_mutability = true +auto_mutability = false auto_mutability_blacklist = [] auto_mutability_whitelist = [] diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index e46ba00..fed5453 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -2159,13 +2159,13 @@ struct VkBufferMemoryBarrier size::VkDeviceSize end -mutable struct VkDispatchIndirectCommand +struct VkDispatchIndirectCommand x::UInt32 y::UInt32 z::UInt32 end -mutable struct VkDrawIndexedIndirectCommand +struct VkDrawIndexedIndirectCommand indexCount::UInt32 instanceCount::UInt32 firstIndex::UInt32 @@ -2173,7 +2173,7 @@ mutable struct VkDrawIndexedIndirectCommand firstInstance::UInt32 end -mutable struct VkDrawIndirectCommand +struct VkDrawIndirectCommand vertexCount::UInt32 instanceCount::UInt32 firstVertex::UInt32 @@ -2265,7 +2265,7 @@ struct VkImageFormatProperties maxResourceSize::VkDeviceSize end -mutable struct VkInstanceCreateInfo +struct VkInstanceCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkInstanceCreateFlags @@ -2496,7 +2496,7 @@ struct VkDeviceQueueCreateInfo pQueuePriorities::Ptr{Cfloat} end -mutable struct VkDeviceCreateInfo +struct VkDeviceCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDeviceCreateFlags @@ -2541,7 +2541,7 @@ struct VkMappedMemoryRange size::VkDeviceSize end -mutable struct VkMemoryAllocateInfo +struct VkMemoryAllocateInfo sType::VkStructureType pNext::Ptr{Cvoid} allocationSize::VkDeviceSize @@ -2624,25 +2624,25 @@ struct VkSparseImageMemoryRequirements imageMipTailStride::VkDeviceSize end -mutable struct VkFenceCreateInfo +struct VkFenceCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkFenceCreateFlags end -mutable struct VkSemaphoreCreateInfo +struct VkSemaphoreCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkSemaphoreCreateFlags end -mutable struct VkEventCreateInfo +struct VkEventCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkEventCreateFlags end -mutable struct VkQueryPoolCreateInfo +struct VkQueryPoolCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkQueryPoolCreateFlags @@ -2651,7 +2651,7 @@ mutable struct VkQueryPoolCreateInfo pipelineStatistics::VkQueryPipelineStatisticFlags end -mutable struct VkBufferCreateInfo +struct VkBufferCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkBufferCreateFlags @@ -2662,7 +2662,7 @@ mutable struct VkBufferCreateInfo pQueueFamilyIndices::Ptr{UInt32} end -mutable struct VkBufferViewCreateInfo +struct VkBufferViewCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkBufferViewCreateFlags @@ -2672,7 +2672,7 @@ mutable struct VkBufferViewCreateInfo range::VkDeviceSize end -mutable struct VkImageCreateInfo +struct VkImageCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkImageCreateFlags @@ -2705,7 +2705,7 @@ struct VkComponentMapping a::VkComponentSwizzle end -mutable struct VkImageViewCreateInfo +struct VkImageViewCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkImageViewCreateFlags @@ -2716,7 +2716,7 @@ mutable struct VkImageViewCreateInfo subresourceRange::VkImageSubresourceRange end -mutable struct VkShaderModuleCreateInfo +struct VkShaderModuleCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkShaderModuleCreateFlags @@ -2724,7 +2724,7 @@ mutable struct VkShaderModuleCreateInfo pCode::Ptr{UInt32} end -mutable struct VkPipelineCacheCreateInfo +struct VkPipelineCacheCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineCacheCreateFlags @@ -2933,7 +2933,7 @@ struct VkPushConstantRange size::UInt32 end -mutable struct VkPipelineLayoutCreateInfo +struct VkPipelineLayoutCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineLayoutCreateFlags @@ -2943,7 +2943,7 @@ mutable struct VkPipelineLayoutCreateInfo pPushConstantRanges::Ptr{VkPushConstantRange} end -mutable struct VkSamplerCreateInfo +struct VkSamplerCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkSamplerCreateFlags @@ -2993,7 +2993,7 @@ struct VkDescriptorPoolSize descriptorCount::UInt32 end -mutable struct VkDescriptorPoolCreateInfo +struct VkDescriptorPoolCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDescriptorPoolCreateFlags @@ -3002,7 +3002,7 @@ mutable struct VkDescriptorPoolCreateInfo pPoolSizes::Ptr{VkDescriptorPoolSize} end -mutable struct VkDescriptorSetAllocateInfo +struct VkDescriptorSetAllocateInfo sType::VkStructureType pNext::Ptr{Cvoid} descriptorPool::VkDescriptorPool @@ -3018,7 +3018,7 @@ struct VkDescriptorSetLayoutBinding pImmutableSamplers::Ptr{VkSampler} end -mutable struct VkDescriptorSetLayoutCreateInfo +struct VkDescriptorSetLayoutCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDescriptorSetLayoutCreateFlags @@ -3056,7 +3056,7 @@ struct VkAttachmentReference layout::VkImageLayout end -mutable struct VkFramebufferCreateInfo +struct VkFramebufferCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkFramebufferCreateFlags @@ -3091,7 +3091,7 @@ struct VkSubpassDependency dependencyFlags::VkDependencyFlags end -mutable struct VkRenderPassCreateInfo +struct VkRenderPassCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkRenderPassCreateFlags @@ -3103,14 +3103,14 @@ mutable struct VkRenderPassCreateInfo pDependencies::Ptr{VkSubpassDependency} end -mutable struct VkCommandPoolCreateInfo +struct VkCommandPoolCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkCommandPoolCreateFlags queueFamilyIndex::UInt32 end -mutable struct VkCommandBufferAllocateInfo +struct VkCommandBufferAllocateInfo sType::VkStructureType pNext::Ptr{Cvoid} commandPool::VkCommandPool @@ -3129,7 +3129,7 @@ struct VkCommandBufferInheritanceInfo pipelineStatistics::VkQueryPipelineStatisticFlags end -mutable struct VkCommandBufferBeginInfo +struct VkCommandBufferBeginInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkCommandBufferUsageFlags @@ -3239,7 +3239,7 @@ struct VkImageResolve extent::VkExtent3D end -mutable struct VkRenderPassBeginInfo +struct VkRenderPassBeginInfo sType::VkStructureType pNext::Ptr{Cvoid} renderPass::VkRenderPass @@ -4554,7 +4554,7 @@ end const VkExternalSemaphoreFeatureFlags = VkFlags -mutable struct VkPhysicalDeviceSubgroupProperties +struct VkPhysicalDeviceSubgroupProperties sType::VkStructureType pNext::Ptr{Cvoid} subgroupSize::UInt32 @@ -4579,7 +4579,7 @@ struct VkBindImageMemoryInfo memoryOffset::VkDeviceSize end -mutable struct VkPhysicalDevice16BitStorageFeatures +struct VkPhysicalDevice16BitStorageFeatures sType::VkStructureType pNext::Ptr{Cvoid} storageBuffer16BitAccess::VkBool32 @@ -4588,28 +4588,28 @@ mutable struct VkPhysicalDevice16BitStorageFeatures storageInputOutput16::VkBool32 end -mutable struct VkMemoryDedicatedRequirements +struct VkMemoryDedicatedRequirements sType::VkStructureType pNext::Ptr{Cvoid} prefersDedicatedAllocation::VkBool32 requiresDedicatedAllocation::VkBool32 end -mutable struct VkMemoryDedicatedAllocateInfo +struct VkMemoryDedicatedAllocateInfo sType::VkStructureType pNext::Ptr{Cvoid} image::VkImage buffer::VkBuffer end -mutable struct VkMemoryAllocateFlagsInfo +struct VkMemoryAllocateFlagsInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkMemoryAllocateFlags deviceMask::UInt32 end -mutable struct VkDeviceGroupRenderPassBeginInfo +struct VkDeviceGroupRenderPassBeginInfo sType::VkStructureType pNext::Ptr{Cvoid} deviceMask::UInt32 @@ -4617,13 +4617,13 @@ mutable struct VkDeviceGroupRenderPassBeginInfo pDeviceRenderAreas::Ptr{VkRect2D} end -mutable struct VkDeviceGroupCommandBufferBeginInfo +struct VkDeviceGroupCommandBufferBeginInfo sType::VkStructureType pNext::Ptr{Cvoid} deviceMask::UInt32 end -mutable struct VkDeviceGroupSubmitInfo +struct VkDeviceGroupSubmitInfo sType::VkStructureType pNext::Ptr{Cvoid} waitSemaphoreCount::UInt32 @@ -4634,21 +4634,21 @@ mutable struct VkDeviceGroupSubmitInfo pSignalSemaphoreDeviceIndices::Ptr{UInt32} end -mutable struct VkDeviceGroupBindSparseInfo +struct VkDeviceGroupBindSparseInfo sType::VkStructureType pNext::Ptr{Cvoid} resourceDeviceIndex::UInt32 memoryDeviceIndex::UInt32 end -mutable struct VkBindBufferMemoryDeviceGroupInfo +struct VkBindBufferMemoryDeviceGroupInfo sType::VkStructureType pNext::Ptr{Cvoid} deviceIndexCount::UInt32 pDeviceIndices::Ptr{UInt32} end -mutable struct VkBindImageMemoryDeviceGroupInfo +struct VkBindImageMemoryDeviceGroupInfo sType::VkStructureType pNext::Ptr{Cvoid} deviceIndexCount::UInt32 @@ -4665,20 +4665,20 @@ struct VkPhysicalDeviceGroupProperties subsetAllocation::VkBool32 end -mutable struct VkDeviceGroupDeviceCreateInfo +struct VkDeviceGroupDeviceCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} physicalDeviceCount::UInt32 pPhysicalDevices::Ptr{VkPhysicalDevice} end -mutable struct VkBufferMemoryRequirementsInfo2 +struct VkBufferMemoryRequirementsInfo2 sType::VkStructureType pNext::Ptr{Cvoid} buffer::VkBuffer end -mutable struct VkImageMemoryRequirementsInfo2 +struct VkImageMemoryRequirementsInfo2 sType::VkStructureType pNext::Ptr{Cvoid} image::VkImage @@ -4690,7 +4690,7 @@ struct VkImageSparseMemoryRequirementsInfo2 image::VkImage end -mutable struct VkMemoryRequirements2 +struct VkMemoryRequirements2 sType::VkStructureType pNext::Ptr{Cvoid} memoryRequirements::VkMemoryRequirements @@ -4702,31 +4702,31 @@ struct VkSparseImageMemoryRequirements2 memoryRequirements::VkSparseImageMemoryRequirements end -mutable struct VkPhysicalDeviceFeatures2 +struct VkPhysicalDeviceFeatures2 sType::VkStructureType pNext::Ptr{Cvoid} features::VkPhysicalDeviceFeatures end -mutable struct VkPhysicalDeviceProperties2 +struct VkPhysicalDeviceProperties2 sType::VkStructureType pNext::Ptr{Cvoid} properties::VkPhysicalDeviceProperties end -mutable struct VkFormatProperties2 +struct VkFormatProperties2 sType::VkStructureType pNext::Ptr{Cvoid} formatProperties::VkFormatProperties end -mutable struct VkImageFormatProperties2 +struct VkImageFormatProperties2 sType::VkStructureType pNext::Ptr{Cvoid} imageFormatProperties::VkImageFormatProperties end -mutable struct VkPhysicalDeviceImageFormatInfo2 +struct VkPhysicalDeviceImageFormatInfo2 sType::VkStructureType pNext::Ptr{Cvoid} format::VkFormat @@ -4742,7 +4742,7 @@ struct VkQueueFamilyProperties2 queueFamilyProperties::VkQueueFamilyProperties end -mutable struct VkPhysicalDeviceMemoryProperties2 +struct VkPhysicalDeviceMemoryProperties2 sType::VkStructureType pNext::Ptr{Cvoid} memoryProperties::VkPhysicalDeviceMemoryProperties @@ -4764,7 +4764,7 @@ struct VkPhysicalDeviceSparseImageFormatInfo2 tiling::VkImageTiling end -mutable struct VkPhysicalDevicePointClippingProperties +struct VkPhysicalDevicePointClippingProperties sType::VkStructureType pNext::Ptr{Cvoid} pointClippingBehavior::VkPointClippingBehavior @@ -4776,26 +4776,26 @@ struct VkInputAttachmentAspectReference aspectMask::VkImageAspectFlags end -mutable struct VkRenderPassInputAttachmentAspectCreateInfo +struct VkRenderPassInputAttachmentAspectCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} aspectReferenceCount::UInt32 pAspectReferences::Ptr{VkInputAttachmentAspectReference} end -mutable struct VkImageViewUsageCreateInfo +struct VkImageViewUsageCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} usage::VkImageUsageFlags end -mutable struct VkPipelineTessellationDomainOriginStateCreateInfo +struct VkPipelineTessellationDomainOriginStateCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} domainOrigin::VkTessellationDomainOrigin end -mutable struct VkRenderPassMultiviewCreateInfo +struct VkRenderPassMultiviewCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} subpassCount::UInt32 @@ -4806,7 +4806,7 @@ mutable struct VkRenderPassMultiviewCreateInfo pCorrelationMasks::Ptr{UInt32} end -mutable struct VkPhysicalDeviceMultiviewFeatures +struct VkPhysicalDeviceMultiviewFeatures sType::VkStructureType pNext::Ptr{Cvoid} multiview::VkBool32 @@ -4814,14 +4814,14 @@ mutable struct VkPhysicalDeviceMultiviewFeatures multiviewTessellationShader::VkBool32 end -mutable struct VkPhysicalDeviceMultiviewProperties +struct VkPhysicalDeviceMultiviewProperties sType::VkStructureType pNext::Ptr{Cvoid} maxMultiviewViewCount::UInt32 maxMultiviewInstanceIndex::UInt32 end -mutable struct VkPhysicalDeviceVariablePointersFeatures +struct VkPhysicalDeviceVariablePointersFeatures sType::VkStructureType pNext::Ptr{Cvoid} variablePointersStorageBuffer::VkBool32 @@ -4830,19 +4830,19 @@ end const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures -mutable struct VkPhysicalDeviceProtectedMemoryFeatures +struct VkPhysicalDeviceProtectedMemoryFeatures sType::VkStructureType pNext::Ptr{Cvoid} protectedMemory::VkBool32 end -mutable struct VkPhysicalDeviceProtectedMemoryProperties +struct VkPhysicalDeviceProtectedMemoryProperties sType::VkStructureType pNext::Ptr{Cvoid} protectedNoFault::VkBool32 end -mutable struct VkDeviceQueueInfo2 +struct VkDeviceQueueInfo2 sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDeviceQueueCreateFlags @@ -4850,13 +4850,13 @@ mutable struct VkDeviceQueueInfo2 queueIndex::UInt32 end -mutable struct VkProtectedSubmitInfo +struct VkProtectedSubmitInfo sType::VkStructureType pNext::Ptr{Cvoid} protectedSubmit::VkBool32 end -mutable struct VkSamplerYcbcrConversionCreateInfo +struct VkSamplerYcbcrConversionCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} format::VkFormat @@ -4869,31 +4869,31 @@ mutable struct VkSamplerYcbcrConversionCreateInfo forceExplicitReconstruction::VkBool32 end -mutable struct VkSamplerYcbcrConversionInfo +struct VkSamplerYcbcrConversionInfo sType::VkStructureType pNext::Ptr{Cvoid} conversion::VkSamplerYcbcrConversion end -mutable struct VkBindImagePlaneMemoryInfo +struct VkBindImagePlaneMemoryInfo sType::VkStructureType pNext::Ptr{Cvoid} planeAspect::VkImageAspectFlagBits end -mutable struct VkImagePlaneMemoryRequirementsInfo +struct VkImagePlaneMemoryRequirementsInfo sType::VkStructureType pNext::Ptr{Cvoid} planeAspect::VkImageAspectFlagBits end -mutable struct VkPhysicalDeviceSamplerYcbcrConversionFeatures +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures sType::VkStructureType pNext::Ptr{Cvoid} samplerYcbcrConversion::VkBool32 end -mutable struct VkSamplerYcbcrConversionImageFormatProperties +struct VkSamplerYcbcrConversionImageFormatProperties sType::VkStructureType pNext::Ptr{Cvoid} combinedImageSamplerDescriptorCount::UInt32 @@ -4908,7 +4908,7 @@ struct VkDescriptorUpdateTemplateEntry stride::Csize_t end -mutable struct VkDescriptorUpdateTemplateCreateInfo +struct VkDescriptorUpdateTemplateCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDescriptorUpdateTemplateCreateFlags @@ -4927,19 +4927,19 @@ struct VkExternalMemoryProperties compatibleHandleTypes::VkExternalMemoryHandleTypeFlags end -mutable struct VkPhysicalDeviceExternalImageFormatInfo +struct VkPhysicalDeviceExternalImageFormatInfo sType::VkStructureType pNext::Ptr{Cvoid} handleType::VkExternalMemoryHandleTypeFlagBits end -mutable struct VkExternalImageFormatProperties +struct VkExternalImageFormatProperties sType::VkStructureType pNext::Ptr{Cvoid} externalMemoryProperties::VkExternalMemoryProperties end -mutable struct VkPhysicalDeviceExternalBufferInfo +struct VkPhysicalDeviceExternalBufferInfo sType::VkStructureType pNext::Ptr{Cvoid} flags::VkBufferCreateFlags @@ -4947,13 +4947,13 @@ mutable struct VkPhysicalDeviceExternalBufferInfo handleType::VkExternalMemoryHandleTypeFlagBits end -mutable struct VkExternalBufferProperties +struct VkExternalBufferProperties sType::VkStructureType pNext::Ptr{Cvoid} externalMemoryProperties::VkExternalMemoryProperties end -mutable struct VkPhysicalDeviceIDProperties +struct VkPhysicalDeviceIDProperties sType::VkStructureType pNext::Ptr{Cvoid} deviceUUID::NTuple{16, UInt8} @@ -4963,31 +4963,31 @@ mutable struct VkPhysicalDeviceIDProperties deviceLUIDValid::VkBool32 end -mutable struct VkExternalMemoryImageCreateInfo +struct VkExternalMemoryImageCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} handleTypes::VkExternalMemoryHandleTypeFlags end -mutable struct VkExternalMemoryBufferCreateInfo +struct VkExternalMemoryBufferCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} handleTypes::VkExternalMemoryHandleTypeFlags end -mutable struct VkExportMemoryAllocateInfo +struct VkExportMemoryAllocateInfo sType::VkStructureType pNext::Ptr{Cvoid} handleTypes::VkExternalMemoryHandleTypeFlags end -mutable struct VkPhysicalDeviceExternalFenceInfo +struct VkPhysicalDeviceExternalFenceInfo sType::VkStructureType pNext::Ptr{Cvoid} handleType::VkExternalFenceHandleTypeFlagBits end -mutable struct VkExternalFenceProperties +struct VkExternalFenceProperties sType::VkStructureType pNext::Ptr{Cvoid} exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags @@ -4995,25 +4995,25 @@ mutable struct VkExternalFenceProperties externalFenceFeatures::VkExternalFenceFeatureFlags end -mutable struct VkExportFenceCreateInfo +struct VkExportFenceCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} handleTypes::VkExternalFenceHandleTypeFlags end -mutable struct VkExportSemaphoreCreateInfo +struct VkExportSemaphoreCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} handleTypes::VkExternalSemaphoreHandleTypeFlags end -mutable struct VkPhysicalDeviceExternalSemaphoreInfo +struct VkPhysicalDeviceExternalSemaphoreInfo sType::VkStructureType pNext::Ptr{Cvoid} handleType::VkExternalSemaphoreHandleTypeFlagBits end -mutable struct VkExternalSemaphoreProperties +struct VkExternalSemaphoreProperties sType::VkStructureType pNext::Ptr{Cvoid} exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags @@ -5021,20 +5021,20 @@ mutable struct VkExternalSemaphoreProperties externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags end -mutable struct VkPhysicalDeviceMaintenance3Properties +struct VkPhysicalDeviceMaintenance3Properties sType::VkStructureType pNext::Ptr{Cvoid} maxPerSetDescriptors::UInt32 maxMemoryAllocationSize::VkDeviceSize end -mutable struct VkDescriptorSetLayoutSupport +struct VkDescriptorSetLayoutSupport sType::VkStructureType pNext::Ptr{Cvoid} supported::VkBool32 end -mutable struct VkPhysicalDeviceShaderDrawParametersFeatures +struct VkPhysicalDeviceShaderDrawParametersFeatures sType::VkStructureType pNext::Ptr{Cvoid} shaderDrawParameters::VkBool32 @@ -5362,7 +5362,7 @@ end const VkSemaphoreWaitFlags = VkFlags -mutable struct VkPhysicalDeviceVulkan11Features +struct VkPhysicalDeviceVulkan11Features sType::VkStructureType pNext::Ptr{Cvoid} storageBuffer16BitAccess::VkBool32 @@ -5379,7 +5379,7 @@ mutable struct VkPhysicalDeviceVulkan11Features shaderDrawParameters::VkBool32 end -mutable struct VkPhysicalDeviceVulkan11Properties +struct VkPhysicalDeviceVulkan11Properties sType::VkStructureType pNext::Ptr{Cvoid} deviceUUID::NTuple{16, UInt8} @@ -5399,7 +5399,7 @@ mutable struct VkPhysicalDeviceVulkan11Properties maxMemoryAllocationSize::VkDeviceSize end -mutable struct VkPhysicalDeviceVulkan12Features +struct VkPhysicalDeviceVulkan12Features sType::VkStructureType pNext::Ptr{Cvoid} samplerMirrorClampToEdge::VkBool32 @@ -5458,7 +5458,7 @@ struct VkConformanceVersion patch::UInt8 end -mutable struct VkPhysicalDeviceVulkan12Properties +struct VkPhysicalDeviceVulkan12Properties sType::VkStructureType pNext::Ptr{Cvoid} driverID::VkDriverId @@ -5515,7 +5515,7 @@ mutable struct VkPhysicalDeviceVulkan12Properties framebufferIntegerColorSampleCounts::VkSampleCountFlags end -mutable struct VkImageFormatListCreateInfo +struct VkImageFormatListCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} viewFormatCount::UInt32 @@ -5573,7 +5573,7 @@ struct VkSubpassDependency2 viewOffset::Int32 end -mutable struct VkRenderPassCreateInfo2 +struct VkRenderPassCreateInfo2 sType::VkStructureType pNext::Ptr{Cvoid} flags::VkRenderPassCreateFlags @@ -5587,18 +5587,18 @@ mutable struct VkRenderPassCreateInfo2 pCorrelatedViewMasks::Ptr{UInt32} end -mutable struct VkSubpassBeginInfo +struct VkSubpassBeginInfo sType::VkStructureType pNext::Ptr{Cvoid} contents::VkSubpassContents end -mutable struct VkSubpassEndInfo +struct VkSubpassEndInfo sType::VkStructureType pNext::Ptr{Cvoid} end -mutable struct VkPhysicalDevice8BitStorageFeatures +struct VkPhysicalDevice8BitStorageFeatures sType::VkStructureType pNext::Ptr{Cvoid} storageBuffer8BitAccess::VkBool32 @@ -5606,7 +5606,7 @@ mutable struct VkPhysicalDevice8BitStorageFeatures storagePushConstant8::VkBool32 end -mutable struct VkPhysicalDeviceDriverProperties +struct VkPhysicalDeviceDriverProperties sType::VkStructureType pNext::Ptr{Cvoid} driverID::VkDriverId @@ -5615,21 +5615,21 @@ mutable struct VkPhysicalDeviceDriverProperties conformanceVersion::VkConformanceVersion end -mutable struct VkPhysicalDeviceShaderAtomicInt64Features +struct VkPhysicalDeviceShaderAtomicInt64Features sType::VkStructureType pNext::Ptr{Cvoid} shaderBufferInt64Atomics::VkBool32 shaderSharedInt64Atomics::VkBool32 end -mutable struct VkPhysicalDeviceShaderFloat16Int8Features +struct VkPhysicalDeviceShaderFloat16Int8Features sType::VkStructureType pNext::Ptr{Cvoid} shaderFloat16::VkBool32 shaderInt8::VkBool32 end -mutable struct VkPhysicalDeviceFloatControlsProperties +struct VkPhysicalDeviceFloatControlsProperties sType::VkStructureType pNext::Ptr{Cvoid} denormBehaviorIndependence::VkShaderFloatControlsIndependence @@ -5651,14 +5651,14 @@ mutable struct VkPhysicalDeviceFloatControlsProperties shaderRoundingModeRTZFloat64::VkBool32 end -mutable struct VkDescriptorSetLayoutBindingFlagsCreateInfo +struct VkDescriptorSetLayoutBindingFlagsCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} bindingCount::UInt32 pBindingFlags::Ptr{VkDescriptorBindingFlags} end -mutable struct VkPhysicalDeviceDescriptorIndexingFeatures +struct VkPhysicalDeviceDescriptorIndexingFeatures sType::VkStructureType pNext::Ptr{Cvoid} shaderInputAttachmentArrayDynamicIndexing::VkBool32 @@ -5683,7 +5683,7 @@ mutable struct VkPhysicalDeviceDescriptorIndexingFeatures runtimeDescriptorArray::VkBool32 end -mutable struct VkPhysicalDeviceDescriptorIndexingProperties +struct VkPhysicalDeviceDescriptorIndexingProperties sType::VkStructureType pNext::Ptr{Cvoid} maxUpdateAfterBindDescriptorsInAllPools::UInt32 @@ -5711,20 +5711,20 @@ mutable struct VkPhysicalDeviceDescriptorIndexingProperties maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 end -mutable struct VkDescriptorSetVariableDescriptorCountAllocateInfo +struct VkDescriptorSetVariableDescriptorCountAllocateInfo sType::VkStructureType pNext::Ptr{Cvoid} descriptorSetCount::UInt32 pDescriptorCounts::Ptr{UInt32} end -mutable struct VkDescriptorSetVariableDescriptorCountLayoutSupport +struct VkDescriptorSetVariableDescriptorCountLayoutSupport sType::VkStructureType pNext::Ptr{Cvoid} maxVariableDescriptorCount::UInt32 end -mutable struct VkSubpassDescriptionDepthStencilResolve +struct VkSubpassDescriptionDepthStencilResolve sType::VkStructureType pNext::Ptr{Cvoid} depthResolveMode::VkResolveModeFlagBits @@ -5732,7 +5732,7 @@ mutable struct VkSubpassDescriptionDepthStencilResolve pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} end -mutable struct VkPhysicalDeviceDepthStencilResolveProperties +struct VkPhysicalDeviceDepthStencilResolveProperties sType::VkStructureType pNext::Ptr{Cvoid} supportedDepthResolveModes::VkResolveModeFlags @@ -5741,32 +5741,32 @@ mutable struct VkPhysicalDeviceDepthStencilResolveProperties independentResolve::VkBool32 end -mutable struct VkPhysicalDeviceScalarBlockLayoutFeatures +struct VkPhysicalDeviceScalarBlockLayoutFeatures sType::VkStructureType pNext::Ptr{Cvoid} scalarBlockLayout::VkBool32 end -mutable struct VkImageStencilUsageCreateInfo +struct VkImageStencilUsageCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} stencilUsage::VkImageUsageFlags end -mutable struct VkSamplerReductionModeCreateInfo +struct VkSamplerReductionModeCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} reductionMode::VkSamplerReductionMode end -mutable struct VkPhysicalDeviceSamplerFilterMinmaxProperties +struct VkPhysicalDeviceSamplerFilterMinmaxProperties sType::VkStructureType pNext::Ptr{Cvoid} filterMinmaxSingleComponentFormats::VkBool32 filterMinmaxImageComponentMapping::VkBool32 end -mutable struct VkPhysicalDeviceVulkanMemoryModelFeatures +struct VkPhysicalDeviceVulkanMemoryModelFeatures sType::VkStructureType pNext::Ptr{Cvoid} vulkanMemoryModel::VkBool32 @@ -5774,7 +5774,7 @@ mutable struct VkPhysicalDeviceVulkanMemoryModelFeatures vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 end -mutable struct VkPhysicalDeviceImagelessFramebufferFeatures +struct VkPhysicalDeviceImagelessFramebufferFeatures sType::VkStructureType pNext::Ptr{Cvoid} imagelessFramebuffer::VkBool32 @@ -5792,77 +5792,77 @@ struct VkFramebufferAttachmentImageInfo pViewFormats::Ptr{VkFormat} end -mutable struct VkFramebufferAttachmentsCreateInfo +struct VkFramebufferAttachmentsCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} attachmentImageInfoCount::UInt32 pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} end -mutable struct VkRenderPassAttachmentBeginInfo +struct VkRenderPassAttachmentBeginInfo sType::VkStructureType pNext::Ptr{Cvoid} attachmentCount::UInt32 pAttachments::Ptr{VkImageView} end -mutable struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures sType::VkStructureType pNext::Ptr{Cvoid} uniformBufferStandardLayout::VkBool32 end -mutable struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures sType::VkStructureType pNext::Ptr{Cvoid} shaderSubgroupExtendedTypes::VkBool32 end -mutable struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures sType::VkStructureType pNext::Ptr{Cvoid} separateDepthStencilLayouts::VkBool32 end -mutable struct VkAttachmentReferenceStencilLayout +struct VkAttachmentReferenceStencilLayout sType::VkStructureType pNext::Ptr{Cvoid} stencilLayout::VkImageLayout end -mutable struct VkAttachmentDescriptionStencilLayout +struct VkAttachmentDescriptionStencilLayout sType::VkStructureType pNext::Ptr{Cvoid} stencilInitialLayout::VkImageLayout stencilFinalLayout::VkImageLayout end -mutable struct VkPhysicalDeviceHostQueryResetFeatures +struct VkPhysicalDeviceHostQueryResetFeatures sType::VkStructureType pNext::Ptr{Cvoid} hostQueryReset::VkBool32 end -mutable struct VkPhysicalDeviceTimelineSemaphoreFeatures +struct VkPhysicalDeviceTimelineSemaphoreFeatures sType::VkStructureType pNext::Ptr{Cvoid} timelineSemaphore::VkBool32 end -mutable struct VkPhysicalDeviceTimelineSemaphoreProperties +struct VkPhysicalDeviceTimelineSemaphoreProperties sType::VkStructureType pNext::Ptr{Cvoid} maxTimelineSemaphoreValueDifference::UInt64 end -mutable struct VkSemaphoreTypeCreateInfo +struct VkSemaphoreTypeCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} semaphoreType::VkSemaphoreType initialValue::UInt64 end -mutable struct VkTimelineSemaphoreSubmitInfo +struct VkTimelineSemaphoreSubmitInfo sType::VkStructureType pNext::Ptr{Cvoid} waitSemaphoreValueCount::UInt32 @@ -5880,14 +5880,14 @@ struct VkSemaphoreWaitInfo pValues::Ptr{UInt64} end -mutable struct VkSemaphoreSignalInfo +struct VkSemaphoreSignalInfo sType::VkStructureType pNext::Ptr{Cvoid} semaphore::VkSemaphore value::UInt64 end -mutable struct VkPhysicalDeviceBufferDeviceAddressFeatures +struct VkPhysicalDeviceBufferDeviceAddressFeatures sType::VkStructureType pNext::Ptr{Cvoid} bufferDeviceAddress::VkBool32 @@ -5895,25 +5895,25 @@ mutable struct VkPhysicalDeviceBufferDeviceAddressFeatures bufferDeviceAddressMultiDevice::VkBool32 end -mutable struct VkBufferDeviceAddressInfo +struct VkBufferDeviceAddressInfo sType::VkStructureType pNext::Ptr{Cvoid} buffer::VkBuffer end -mutable struct VkBufferOpaqueCaptureAddressCreateInfo +struct VkBufferOpaqueCaptureAddressCreateInfo sType::VkStructureType pNext::Ptr{Cvoid} opaqueCaptureAddress::UInt64 end -mutable struct VkMemoryOpaqueCaptureAddressAllocateInfo +struct VkMemoryOpaqueCaptureAddressAllocateInfo sType::VkStructureType pNext::Ptr{Cvoid} opaqueCaptureAddress::UInt64 end -mutable struct VkDeviceMemoryOpaqueCaptureAddressInfo +struct VkDeviceMemoryOpaqueCaptureAddressInfo sType::VkStructureType pNext::Ptr{Cvoid} memory::VkDeviceMemory @@ -6186,7 +6186,7 @@ struct VkSwapchainCreateInfoKHR oldSwapchain::VkSwapchainKHR end -mutable struct VkPresentInfoKHR +struct VkPresentInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} waitSemaphoreCount::UInt32 @@ -6197,13 +6197,13 @@ mutable struct VkPresentInfoKHR pResults::Ptr{VkResult} end -mutable struct VkImageSwapchainCreateInfoKHR +struct VkImageSwapchainCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} swapchain::VkSwapchainKHR end -mutable struct VkBindImageMemorySwapchainInfoKHR +struct VkBindImageMemorySwapchainInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} swapchain::VkSwapchainKHR @@ -6220,14 +6220,14 @@ struct VkAcquireNextImageInfoKHR deviceMask::UInt32 end -mutable struct VkDeviceGroupPresentCapabilitiesKHR +struct VkDeviceGroupPresentCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} presentMask::NTuple{32, UInt32} modes::VkDeviceGroupPresentModeFlagsKHR end -mutable struct VkDeviceGroupPresentInfoKHR +struct VkDeviceGroupPresentInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} swapchainCount::UInt32 @@ -6235,7 +6235,7 @@ mutable struct VkDeviceGroupPresentInfoKHR mode::VkDeviceGroupPresentModeFlagBitsKHR end -mutable struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkDeviceGroupSwapchainCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} modes::VkDeviceGroupPresentModeFlagsKHR @@ -6340,7 +6340,7 @@ struct VkDisplayModeParametersKHR refreshRate::UInt32 end -mutable struct VkDisplayModeCreateInfoKHR +struct VkDisplayModeCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDisplayModeCreateFlagsKHR @@ -6379,7 +6379,7 @@ struct VkDisplayPropertiesKHR persistentContent::VkBool32 end -mutable struct VkDisplaySurfaceCreateInfoKHR +struct VkDisplaySurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDisplaySurfaceCreateFlagsKHR @@ -6448,7 +6448,7 @@ function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurf ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -mutable struct VkDisplayPresentInfoKHR +struct VkDisplayPresentInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} srcRect::VkRect2D @@ -6646,7 +6646,7 @@ const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo -mutable struct VkImportMemoryFdInfoKHR +struct VkImportMemoryFdInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} handleType::VkExternalMemoryHandleTypeFlagBits @@ -6659,7 +6659,7 @@ struct VkMemoryFdPropertiesKHR memoryTypeBits::UInt32 end -mutable struct VkMemoryGetFdInfoKHR +struct VkMemoryGetFdInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} memory::VkDeviceMemory @@ -6708,7 +6708,7 @@ const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo -mutable struct VkImportSemaphoreFdInfoKHR +struct VkImportSemaphoreFdInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} semaphore::VkSemaphore @@ -6717,7 +6717,7 @@ mutable struct VkImportSemaphoreFdInfoKHR fd::Cint end -mutable struct VkSemaphoreGetFdInfoKHR +struct VkSemaphoreGetFdInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} semaphore::VkSemaphore @@ -6740,7 +6740,7 @@ function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) end -mutable struct VkPhysicalDevicePushDescriptorPropertiesKHR +struct VkPhysicalDevicePushDescriptorPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} maxPushDescriptors::UInt32 @@ -6779,7 +6779,7 @@ struct VkPresentRegionKHR pRectangles::Ptr{VkRectLayerKHR} end -mutable struct VkPresentRegionsKHR +struct VkPresentRegionsKHR sType::VkStructureType pNext::Ptr{Cvoid} swapchainCount::UInt32 @@ -6874,7 +6874,7 @@ function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) end -mutable struct VkSharedPresentSurfaceCapabilitiesKHR +struct VkSharedPresentSurfaceCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} sharedPresentSupportedUsageFlags::VkImageUsageFlags @@ -6914,7 +6914,7 @@ const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo -mutable struct VkImportFenceFdInfoKHR +struct VkImportFenceFdInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} fence::VkFence @@ -6923,7 +6923,7 @@ mutable struct VkImportFenceFdInfoKHR fd::Cint end -mutable struct VkFenceGetFdInfoKHR +struct VkFenceGetFdInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} fence::VkFence @@ -6995,14 +6995,14 @@ end const VkAcquireProfilingLockFlagsKHR = VkFlags -mutable struct VkPhysicalDevicePerformanceQueryFeaturesKHR +struct VkPhysicalDevicePerformanceQueryFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} performanceCounterQueryPools::VkBool32 performanceCounterMultipleQueryPools::VkBool32 end -mutable struct VkPhysicalDevicePerformanceQueryPropertiesKHR +struct VkPhysicalDevicePerformanceQueryPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} allowCommandBufferQueryCopies::VkBool32 @@ -7058,14 +7058,14 @@ function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end -mutable struct VkAcquireProfilingLockInfoKHR +struct VkAcquireProfilingLockInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkAcquireProfilingLockFlagsKHR timeout::UInt64 end -mutable struct VkPerformanceQuerySubmitInfoKHR +struct VkPerformanceQuerySubmitInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} counterPassIndex::UInt32 @@ -7123,7 +7123,7 @@ struct VkPhysicalDeviceSurfaceInfo2KHR surface::VkSurfaceKHR end -mutable struct VkSurfaceCapabilities2KHR +struct VkSurfaceCapabilities2KHR sType::VkStructureType pNext::Ptr{Cvoid} surfaceCapabilities::VkSurfaceCapabilitiesKHR @@ -7173,14 +7173,14 @@ struct VkDisplayModeProperties2KHR displayModeProperties::VkDisplayModePropertiesKHR end -mutable struct VkDisplayPlaneInfo2KHR +struct VkDisplayPlaneInfo2KHR sType::VkStructureType pNext::Ptr{Cvoid} mode::VkDisplayModeKHR planeIndex::UInt32 end -mutable struct VkDisplayPlaneCapabilities2KHR +struct VkDisplayPlaneCapabilities2KHR sType::VkStructureType pNext::Ptr{Cvoid} capabilities::VkDisplayPlaneCapabilitiesKHR @@ -7348,7 +7348,7 @@ const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatur const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features -mutable struct VkPhysicalDeviceShaderClockFeaturesKHR +struct VkPhysicalDeviceShaderClockFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} shaderSubgroupClock::VkBool32 @@ -7417,7 +7417,7 @@ end const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures -mutable struct VkSurfaceProtectedCapabilitiesKHR +struct VkSurfaceProtectedCapabilitiesKHR sType::VkStructureType pNext::Ptr{Cvoid} supportsProtected::VkBool32 @@ -7473,7 +7473,7 @@ end VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 end -mutable struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} pipelineExecutableInfo::VkBool32 @@ -7629,7 +7629,7 @@ const VkDebugReportFlagsEXT = VkFlags # typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} -mutable struct VkDebugReportCallbackCreateInfoEXT +struct VkDebugReportCallbackCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDebugReportFlagsEXT @@ -7667,13 +7667,13 @@ end VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 end -mutable struct VkPipelineRasterizationStateRasterizationOrderAMD +struct VkPipelineRasterizationStateRasterizationOrderAMD sType::VkStructureType pNext::Ptr{Cvoid} rasterizationOrder::VkRasterizationOrderAMD end -mutable struct VkDebugMarkerObjectNameInfoEXT +struct VkDebugMarkerObjectNameInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} objectType::VkDebugReportObjectTypeEXT @@ -7681,7 +7681,7 @@ mutable struct VkDebugMarkerObjectNameInfoEXT pObjectName::Ptr{Cchar} end -mutable struct VkDebugMarkerObjectTagInfoEXT +struct VkDebugMarkerObjectTagInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} objectType::VkDebugReportObjectTypeEXT @@ -7691,7 +7691,7 @@ mutable struct VkDebugMarkerObjectTagInfoEXT pTag::Ptr{Cvoid} end -mutable struct VkDebugMarkerMarkerInfoEXT +struct VkDebugMarkerMarkerInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} pMarkerName::Ptr{Cchar} @@ -7738,19 +7738,19 @@ function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) end -mutable struct VkDedicatedAllocationImageCreateInfoNV +struct VkDedicatedAllocationImageCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} dedicatedAllocation::VkBool32 end -mutable struct VkDedicatedAllocationBufferCreateInfoNV +struct VkDedicatedAllocationBufferCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} dedicatedAllocation::VkBool32 end -mutable struct VkDedicatedAllocationMemoryAllocateInfoNV +struct VkDedicatedAllocationMemoryAllocateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} image::VkImage @@ -7759,14 +7759,14 @@ end const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags -mutable struct VkPhysicalDeviceTransformFeedbackFeaturesEXT +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} transformFeedback::VkBool32 geometryStreams::VkBool32 end -mutable struct VkPhysicalDeviceTransformFeedbackPropertiesEXT +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} maxTransformFeedbackStreams::UInt32 @@ -7781,7 +7781,7 @@ mutable struct VkPhysicalDeviceTransformFeedbackPropertiesEXT transformFeedbackDraw::VkBool32 end -mutable struct VkPipelineRasterizationStateStreamCreateInfoEXT +struct VkPipelineRasterizationStateStreamCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineRasterizationStateStreamCreateFlagsEXT @@ -7836,7 +7836,7 @@ function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstan ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) end -mutable struct VkImageViewHandleInfoNVX +struct VkImageViewHandleInfoNVX sType::VkStructureType pNext::Ptr{Cvoid} imageView::VkImageView @@ -7844,7 +7844,7 @@ mutable struct VkImageViewHandleInfoNVX sampler::VkSampler end -mutable struct VkImageViewAddressPropertiesNVX +struct VkImageViewAddressPropertiesNVX sType::VkStructureType pNext::Ptr{Cvoid} deviceAddress::VkDeviceAddress @@ -7883,7 +7883,7 @@ function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBu ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -mutable struct VkTextureLODGatherFormatPropertiesAMD +struct VkTextureLODGatherFormatPropertiesAMD sType::VkStructureType pNext::Ptr{Cvoid} supportsTextureGatherLODBiasAMD::VkBool32 @@ -7904,7 +7904,7 @@ struct VkShaderResourceUsageAMD scratchMemUsageInBytes::Csize_t end -mutable struct VkShaderStatisticsInfoAMD +struct VkShaderStatisticsInfoAMD shaderStageMask::VkShaderStageFlags resourceUsage::VkShaderResourceUsageAMD numPhysicalVgprs::UInt32 @@ -7922,7 +7922,7 @@ function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) end -mutable struct VkPhysicalDeviceCornerSampledImageFeaturesNV +struct VkPhysicalDeviceCornerSampledImageFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} cornerSampledImage::VkBool32 @@ -7947,7 +7947,7 @@ end const VkExternalMemoryFeatureFlagsNV = VkFlags -mutable struct VkExternalImageFormatPropertiesNV +struct VkExternalImageFormatPropertiesNV imageFormatProperties::VkImageFormatProperties externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV @@ -7962,13 +7962,13 @@ function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, form ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) end -mutable struct VkExternalMemoryImageCreateInfoNV +struct VkExternalMemoryImageCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} handleTypes::VkExternalMemoryHandleTypeFlagsNV end -mutable struct VkExportMemoryAllocateInfoNV +struct VkExportMemoryAllocateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} handleTypes::VkExternalMemoryHandleTypeFlagsNV @@ -7980,26 +7980,26 @@ end VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 end -mutable struct VkValidationFlagsEXT +struct VkValidationFlagsEXT sType::VkStructureType pNext::Ptr{Cvoid} disabledValidationCheckCount::UInt32 pDisabledValidationChecks::Ptr{VkValidationCheckEXT} end -mutable struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} textureCompressionASTC_HDR::VkBool32 end -mutable struct VkImageViewASTCDecodeModeEXT +struct VkImageViewASTCDecodeModeEXT sType::VkStructureType pNext::Ptr{Cvoid} decodeMode::VkFormat end -mutable struct VkPhysicalDeviceASTCDecodeFeaturesEXT +struct VkPhysicalDeviceASTCDecodeFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} decodeModeSharedExponent::VkBool32 @@ -8012,7 +8012,7 @@ end const VkConditionalRenderingFlagsEXT = VkFlags -mutable struct VkConditionalRenderingBeginInfoEXT +struct VkConditionalRenderingBeginInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} buffer::VkBuffer @@ -8020,14 +8020,14 @@ mutable struct VkConditionalRenderingBeginInfoEXT flags::VkConditionalRenderingFlagsEXT end -mutable struct VkPhysicalDeviceConditionalRenderingFeaturesEXT +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} conditionalRendering::VkBool32 inheritedConditionalRendering::VkBool32 end -mutable struct VkCommandBufferInheritanceConditionalRenderingInfoEXT +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} conditionalRenderingEnable::VkBool32 @@ -8054,7 +8054,7 @@ struct VkViewportWScalingNV ycoeff::Cfloat end -mutable struct VkPipelineViewportWScalingStateCreateInfoNV +struct VkPipelineViewportWScalingStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} viewportWScalingEnable::VkBool32 @@ -8085,7 +8085,7 @@ end const VkSurfaceCounterFlagsEXT = VkFlags -mutable struct VkSurfaceCapabilities2EXT +struct VkSurfaceCapabilities2EXT sType::VkStructureType pNext::Ptr{Cvoid} minImageCount::UInt32 @@ -8126,25 +8126,25 @@ end VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 end -mutable struct VkDisplayPowerInfoEXT +struct VkDisplayPowerInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} powerState::VkDisplayPowerStateEXT end -mutable struct VkDeviceEventInfoEXT +struct VkDeviceEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} deviceEvent::VkDeviceEventTypeEXT end -mutable struct VkDisplayEventInfoEXT +struct VkDisplayEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} displayEvent::VkDisplayEventTypeEXT end -mutable struct VkSwapchainCounterCreateInfoEXT +struct VkSwapchainCounterCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} surfaceCounters::VkSurfaceCounterFlagsEXT @@ -8182,7 +8182,7 @@ function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) end -mutable struct VkRefreshCycleDurationGOOGLE +struct VkRefreshCycleDurationGOOGLE refreshDuration::UInt64 end @@ -8199,7 +8199,7 @@ struct VkPresentTimeGOOGLE desiredPresentTime::UInt64 end -mutable struct VkPresentTimesInfoGOOGLE +struct VkPresentTimesInfoGOOGLE sType::VkStructureType pNext::Ptr{Cvoid} swapchainCount::UInt32 @@ -8222,7 +8222,7 @@ function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimin ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) end -mutable struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX sType::VkStructureType pNext::Ptr{Cvoid} perViewPositionAllComponents::VkBool32 @@ -8249,7 +8249,7 @@ struct VkViewportSwizzleNV w::VkViewportCoordinateSwizzleNV end -mutable struct VkPipelineViewportSwizzleStateCreateInfoNV +struct VkPipelineViewportSwizzleStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineViewportSwizzleStateCreateFlagsNV @@ -8265,13 +8265,13 @@ end const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags -mutable struct VkPhysicalDeviceDiscardRectanglePropertiesEXT +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} maxDiscardRectangles::UInt32 end -mutable struct VkPipelineDiscardRectangleStateCreateInfoEXT +struct VkPipelineDiscardRectangleStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineDiscardRectangleStateCreateFlagsEXT @@ -8297,7 +8297,7 @@ end const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags -mutable struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} primitiveOverestimationSize::Cfloat @@ -8311,7 +8311,7 @@ mutable struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT conservativeRasterizationPostDepthCoverage::VkBool32 end -mutable struct VkPipelineRasterizationConservativeStateCreateInfoEXT +struct VkPipelineRasterizationConservativeStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT @@ -8321,13 +8321,13 @@ end const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags -mutable struct VkPhysicalDeviceDepthClipEnableFeaturesEXT +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} depthClipEnable::VkBool32 end -mutable struct VkPipelineRasterizationDepthClipStateCreateInfoEXT +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT @@ -8402,7 +8402,7 @@ struct VkDebugUtilsObjectNameInfoEXT pObjectName::Ptr{Cchar} end -mutable struct VkDebugUtilsMessengerCallbackDataEXT +struct VkDebugUtilsMessengerCallbackDataEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDebugUtilsMessengerCallbackDataFlagsEXT @@ -8421,7 +8421,7 @@ end # typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} -mutable struct VkDebugUtilsMessengerCreateInfoEXT +struct VkDebugUtilsMessengerCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDebugUtilsMessengerCreateFlagsEXT @@ -8431,7 +8431,7 @@ mutable struct VkDebugUtilsMessengerCreateInfoEXT pUserData::Ptr{Cvoid} end -mutable struct VkDebugUtilsObjectTagInfoEXT +struct VkDebugUtilsObjectTagInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} objectType::VkObjectType @@ -8535,14 +8535,14 @@ const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties -mutable struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} inlineUniformBlock::VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 end -mutable struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} maxInlineUniformBlockSize::UInt32 @@ -8552,14 +8552,14 @@ mutable struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 end -mutable struct VkWriteDescriptorSetInlineUniformBlockEXT +struct VkWriteDescriptorSetInlineUniformBlockEXT sType::VkStructureType pNext::Ptr{Cvoid} dataSize::UInt32 pData::Ptr{Cvoid} end -mutable struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} maxInlineUniformBlockBindings::UInt32 @@ -8589,7 +8589,7 @@ struct VkSubpassSampleLocationsEXT sampleLocationsInfo::VkSampleLocationsInfoEXT end -mutable struct VkRenderPassSampleLocationsBeginInfoEXT +struct VkRenderPassSampleLocationsBeginInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} attachmentInitialSampleLocationsCount::UInt32 @@ -8598,14 +8598,14 @@ mutable struct VkRenderPassSampleLocationsBeginInfoEXT pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} end -mutable struct VkPipelineSampleLocationsStateCreateInfoEXT +struct VkPipelineSampleLocationsStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} sampleLocationsEnable::VkBool32 sampleLocationsInfo::VkSampleLocationsInfoEXT end -mutable struct VkPhysicalDeviceSampleLocationsPropertiesEXT +struct VkPhysicalDeviceSampleLocationsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} sampleLocationSampleCounts::VkSampleCountFlags @@ -8615,7 +8615,7 @@ mutable struct VkPhysicalDeviceSampleLocationsPropertiesEXT variableSampleLocations::VkBool32 end -mutable struct VkMultisamplePropertiesEXT +struct VkMultisamplePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} maxSampleLocationGridSize::VkExtent2D @@ -8644,13 +8644,13 @@ end VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 end -mutable struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} advancedBlendCoherentOperations::VkBool32 end -mutable struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} advancedBlendMaxColorAttachments::UInt32 @@ -8661,7 +8661,7 @@ mutable struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT advancedBlendAllOperations::VkBool32 end -mutable struct VkPipelineColorBlendAdvancedStateCreateInfoEXT +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} srcPremultiplied::VkBool32 @@ -8671,7 +8671,7 @@ end const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags -mutable struct VkPipelineCoverageToColorStateCreateInfoNV +struct VkPipelineCoverageToColorStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineCoverageToColorStateCreateFlagsNV @@ -8689,7 +8689,7 @@ end const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags -mutable struct VkPipelineCoverageModulationStateCreateInfoNV +struct VkPipelineCoverageModulationStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineCoverageModulationStateCreateFlagsNV @@ -8699,14 +8699,14 @@ mutable struct VkPipelineCoverageModulationStateCreateInfoNV pCoverageModulationTable::Ptr{Cfloat} end -mutable struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} shaderSMCount::UInt32 shaderWarpsPerSM::UInt32 end -mutable struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} shaderSMBuiltins::VkBool32 @@ -8718,14 +8718,14 @@ struct VkDrmFormatModifierPropertiesEXT drmFormatModifierTilingFeatures::VkFormatFeatureFlags end -mutable struct VkDrmFormatModifierPropertiesListEXT +struct VkDrmFormatModifierPropertiesListEXT sType::VkStructureType pNext::Ptr{Cvoid} drmFormatModifierCount::UInt32 pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} end -mutable struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} drmFormatModifier::UInt64 @@ -8734,14 +8734,14 @@ mutable struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT pQueueFamilyIndices::Ptr{UInt32} end -mutable struct VkImageDrmFormatModifierListCreateInfoEXT +struct VkImageDrmFormatModifierListCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} drmFormatModifierCount::UInt32 pDrmFormatModifiers::Ptr{UInt64} end -mutable struct VkImageDrmFormatModifierExplicitCreateInfoEXT +struct VkImageDrmFormatModifierExplicitCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} drmFormatModifier::UInt64 @@ -8749,7 +8749,7 @@ mutable struct VkImageDrmFormatModifierExplicitCreateInfoEXT pPlaneLayouts::Ptr{VkSubresourceLayout} end -mutable struct VkImageDrmFormatModifierPropertiesEXT +struct VkImageDrmFormatModifierPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} drmFormatModifier::UInt64 @@ -8774,7 +8774,7 @@ end const VkValidationCacheCreateFlagsEXT = VkFlags -mutable struct VkValidationCacheCreateInfoEXT +struct VkValidationCacheCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkValidationCacheCreateFlagsEXT @@ -8782,7 +8782,7 @@ mutable struct VkValidationCacheCreateInfoEXT pInitialData::Ptr{Cvoid} end -mutable struct VkShaderModuleValidationCacheCreateInfoEXT +struct VkShaderModuleValidationCacheCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} validationCache::VkValidationCacheEXT @@ -8863,7 +8863,7 @@ struct VkShadingRatePaletteNV pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} end -mutable struct VkPipelineViewportShadingRateImageStateCreateInfoNV +struct VkPipelineViewportShadingRateImageStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} shadingRateImageEnable::VkBool32 @@ -8871,14 +8871,14 @@ mutable struct VkPipelineViewportShadingRateImageStateCreateInfoNV pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} end -mutable struct VkPhysicalDeviceShadingRateImageFeaturesNV +struct VkPhysicalDeviceShadingRateImageFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} shadingRateImage::VkBool32 shadingRateCoarseSampleOrder::VkBool32 end -mutable struct VkPhysicalDeviceShadingRateImagePropertiesNV +struct VkPhysicalDeviceShadingRateImagePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} shadingRateTexelSize::VkExtent2D @@ -8899,7 +8899,7 @@ struct VkCoarseSampleOrderCustomNV pSampleLocations::Ptr{VkCoarseSampleLocationNV} end -mutable struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} sampleOrderType::VkCoarseSampleOrderTypeNV @@ -9118,7 +9118,7 @@ struct VkAccelerationStructureInfoNV pGeometries::Ptr{VkGeometryNV} end -mutable struct VkAccelerationStructureCreateInfoNV +struct VkAccelerationStructureCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} compactedSize::VkDeviceSize @@ -9137,7 +9137,7 @@ end const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR -mutable struct VkWriteDescriptorSetAccelerationStructureKHR +struct VkWriteDescriptorSetAccelerationStructureKHR sType::VkStructureType pNext::Ptr{Cvoid} accelerationStructureCount::UInt32 @@ -9146,14 +9146,14 @@ end const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR -mutable struct VkAccelerationStructureMemoryRequirementsInfoNV +struct VkAccelerationStructureMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} type::VkAccelerationStructureMemoryRequirementsTypeNV accelerationStructure::VkAccelerationStructureNV end -mutable struct VkPhysicalDeviceRayTracingPropertiesNV +struct VkPhysicalDeviceRayTracingPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} shaderGroupHandleSize::UInt32 @@ -9166,13 +9166,13 @@ mutable struct VkPhysicalDeviceRayTracingPropertiesNV maxDescriptorSetAccelerationStructures::UInt32 end -mutable struct VkTransformMatrixKHR +struct VkTransformMatrixKHR matrix::NTuple{3, NTuple{4, Cfloat}} end const VkTransformMatrixNV = VkTransformMatrixKHR -mutable struct VkAabbPositionsKHR +struct VkAabbPositionsKHR minX::Cfloat minY::Cfloat minZ::Cfloat @@ -9337,25 +9337,25 @@ function vkCompileDeferredNV(device, pipeline, shader) ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) end -mutable struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} representativeFragmentTest::VkBool32 end -mutable struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} representativeFragmentTestEnable::VkBool32 end -mutable struct VkPhysicalDeviceImageViewImageFormatInfoEXT +struct VkPhysicalDeviceImageViewImageFormatInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} imageViewType::VkImageViewType end -mutable struct VkFilterCubicImageViewImageFormatPropertiesEXT +struct VkFilterCubicImageViewImageFormatPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} filterCubic::VkBool32 @@ -9370,26 +9370,26 @@ end VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 end -mutable struct VkDeviceQueueGlobalPriorityCreateInfoEXT +struct VkDeviceQueueGlobalPriorityCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} globalPriority::VkQueueGlobalPriorityEXT end -mutable struct VkImportMemoryHostPointerInfoEXT +struct VkImportMemoryHostPointerInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} handleType::VkExternalMemoryHandleTypeFlagBits pHostPointer::Ptr{Cvoid} end -mutable struct VkMemoryHostPointerPropertiesEXT +struct VkMemoryHostPointerPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} memoryTypeBits::UInt32 end -mutable struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} minImportedHostPointerAlignment::VkDeviceSize @@ -9417,7 +9417,7 @@ end const VkPipelineCompilerControlFlagsAMD = VkFlags -mutable struct VkPipelineCompilerControlCreateInfoAMD +struct VkPipelineCompilerControlCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} compilerControlFlags::VkPipelineCompilerControlFlagsAMD @@ -9453,7 +9453,7 @@ function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, p ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) end -mutable struct VkPhysicalDeviceShaderCorePropertiesAMD +struct VkPhysicalDeviceShaderCorePropertiesAMD sType::VkStructureType pNext::Ptr{Cvoid} shaderEngineCount::UInt32 @@ -9479,13 +9479,13 @@ end VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 end -mutable struct VkDeviceMemoryOverallocationCreateInfoAMD +struct VkDeviceMemoryOverallocationCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} overallocationBehavior::VkMemoryOverallocationBehaviorAMD end -mutable struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} maxVertexAttribDivisor::UInt32 @@ -9496,14 +9496,14 @@ struct VkVertexInputBindingDivisorDescriptionEXT divisor::UInt32 end -mutable struct VkPipelineVertexInputDivisorStateCreateInfoEXT +struct VkPipelineVertexInputDivisorStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} vertexBindingDivisorCount::UInt32 pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} end -mutable struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} vertexAttributeInstanceRateDivisor::VkBool32 @@ -9524,7 +9524,7 @@ struct VkPipelineCreationFeedbackEXT duration::UInt64 end -mutable struct VkPipelineCreationFeedbackCreateInfoEXT +struct VkPipelineCreationFeedbackCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} @@ -9532,21 +9532,21 @@ mutable struct VkPipelineCreationFeedbackCreateInfoEXT pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} end -mutable struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} computeDerivativeGroupQuads::VkBool32 computeDerivativeGroupLinear::VkBool32 end -mutable struct VkPhysicalDeviceMeshShaderFeaturesNV +struct VkPhysicalDeviceMeshShaderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} taskShader::VkBool32 meshShader::VkBool32 end -mutable struct VkPhysicalDeviceMeshShaderPropertiesNV +struct VkPhysicalDeviceMeshShaderPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} maxDrawMeshTasksCount::UInt32 @@ -9564,7 +9564,7 @@ mutable struct VkPhysicalDeviceMeshShaderPropertiesNV meshOutputPerPrimitiveGranularity::UInt32 end -mutable struct VkDrawMeshTasksIndirectCommandNV +struct VkDrawMeshTasksIndirectCommandNV taskCount::UInt32 firstTask::UInt32 end @@ -9593,26 +9593,26 @@ function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countB ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -mutable struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} fragmentShaderBarycentric::VkBool32 end -mutable struct VkPhysicalDeviceShaderImageFootprintFeaturesNV +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} imageFootprint::VkBool32 end -mutable struct VkPipelineViewportExclusiveScissorStateCreateInfoNV +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} exclusiveScissorCount::UInt32 pExclusiveScissors::Ptr{VkRect2D} end -mutable struct VkPhysicalDeviceExclusiveScissorFeaturesNV +struct VkPhysicalDeviceExclusiveScissorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} exclusiveScissor::VkBool32 @@ -9626,7 +9626,7 @@ function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclus ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) end -mutable struct VkQueueFamilyCheckpointPropertiesNV +struct VkQueueFamilyCheckpointPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} checkpointExecutionStageMask::VkPipelineStageFlags @@ -9655,7 +9655,7 @@ function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) end -mutable struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL sType::VkStructureType pNext::Ptr{Cvoid} shaderIntegerFunctions2::VkBool32 @@ -9719,18 +9719,18 @@ function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) unsafe_store!(getproperty(x, f), v) end -mutable struct VkPerformanceValueINTEL +struct VkPerformanceValueINTEL type::VkPerformanceValueTypeINTEL data::VkPerformanceValueDataINTEL end -mutable struct VkInitializePerformanceApiInfoINTEL +struct VkInitializePerformanceApiInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} pUserData::Ptr{Cvoid} end -mutable struct VkQueryPoolPerformanceQueryCreateInfoINTEL +struct VkQueryPoolPerformanceQueryCreateInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} performanceCountersSampling::VkQueryPoolSamplingModeINTEL @@ -9738,19 +9738,19 @@ end const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL -mutable struct VkPerformanceMarkerInfoINTEL +struct VkPerformanceMarkerInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} marker::UInt64 end -mutable struct VkPerformanceStreamMarkerInfoINTEL +struct VkPerformanceStreamMarkerInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} marker::UInt32 end -mutable struct VkPerformanceOverrideInfoINTEL +struct VkPerformanceOverrideInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} type::VkPerformanceOverrideTypeINTEL @@ -9758,7 +9758,7 @@ mutable struct VkPerformanceOverrideInfoINTEL parameter::UInt64 end -mutable struct VkPerformanceConfigurationAcquireInfoINTEL +struct VkPerformanceConfigurationAcquireInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} type::VkPerformanceConfigurationTypeINTEL @@ -9836,7 +9836,7 @@ function vkGetPerformanceParameterINTEL(device, parameter, pValue) ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) end -mutable struct VkPhysicalDevicePCIBusInfoPropertiesEXT +struct VkPhysicalDevicePCIBusInfoPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} pciDomain::UInt32 @@ -9845,13 +9845,13 @@ mutable struct VkPhysicalDevicePCIBusInfoPropertiesEXT pciFunction::UInt32 end -mutable struct VkDisplayNativeHdrSurfaceCapabilitiesAMD +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD sType::VkStructureType pNext::Ptr{Cvoid} localDimmingSupport::VkBool32 end -mutable struct VkSwapchainDisplayNativeHdrCreateInfoAMD +struct VkSwapchainDisplayNativeHdrCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} localDimmingEnable::VkBool32 @@ -9865,7 +9865,7 @@ function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) end -mutable struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} fragmentDensityMap::VkBool32 @@ -9873,7 +9873,7 @@ mutable struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT fragmentDensityMapNonSubsampledImages::VkBool32 end -mutable struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} minFragmentDensityTexelSize::VkExtent2D @@ -9881,7 +9881,7 @@ mutable struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT fragmentDensityInvocations::VkBool32 end -mutable struct VkRenderPassFragmentDensityMapCreateInfoEXT +struct VkRenderPassFragmentDensityMapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} fragmentDensityMapAttachment::VkAttachmentReference @@ -9889,14 +9889,14 @@ end const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures -mutable struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} subgroupSizeControl::VkBool32 computeFullSubgroups::VkBool32 end -mutable struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} minSubgroupSize::UInt32 @@ -9905,7 +9905,7 @@ mutable struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT requiredSubgroupSizeStages::VkShaderStageFlags end -mutable struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} requiredSubgroupSize::UInt32 @@ -9917,45 +9917,45 @@ end const VkShaderCorePropertiesFlagsAMD = VkFlags -mutable struct VkPhysicalDeviceShaderCoreProperties2AMD +struct VkPhysicalDeviceShaderCoreProperties2AMD sType::VkStructureType pNext::Ptr{Cvoid} shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD activeComputeUnitCount::UInt32 end -mutable struct VkPhysicalDeviceCoherentMemoryFeaturesAMD +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} deviceCoherentMemory::VkBool32 end -mutable struct VkPhysicalDeviceMemoryBudgetPropertiesEXT +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} heapBudget::NTuple{16, VkDeviceSize} heapUsage::NTuple{16, VkDeviceSize} end -mutable struct VkPhysicalDeviceMemoryPriorityFeaturesEXT +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} memoryPriority::VkBool32 end -mutable struct VkMemoryPriorityAllocateInfoEXT +struct VkMemoryPriorityAllocateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} priority::Cfloat end -mutable struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} dedicatedAllocationImageAliasing::VkBool32 end -mutable struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} bufferDeviceAddress::VkBool32 @@ -9967,7 +9967,7 @@ const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAdd const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo -mutable struct VkBufferDeviceAddressCreateInfoEXT +struct VkBufferDeviceAddressCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} deviceAddress::VkDeviceAddress @@ -10034,7 +10034,7 @@ end VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 end -mutable struct VkValidationFeaturesEXT +struct VkValidationFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} enabledValidationFeatureCount::UInt32 @@ -10079,14 +10079,14 @@ struct VkCooperativeMatrixPropertiesNV scope::VkScopeNV end -mutable struct VkPhysicalDeviceCooperativeMatrixFeaturesNV +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} cooperativeMatrix::VkBool32 cooperativeMatrixRobustBufferAccess::VkBool32 end -mutable struct VkPhysicalDeviceCooperativeMatrixPropertiesNV +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} cooperativeMatrixSupportedStages::VkShaderStageFlags @@ -10108,13 +10108,13 @@ end const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags -mutable struct VkPhysicalDeviceCoverageReductionModeFeaturesNV +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} coverageReductionMode::VkBool32 end -mutable struct VkPipelineCoverageReductionStateCreateInfoNV +struct VkPipelineCoverageReductionStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPipelineCoverageReductionStateCreateFlagsNV @@ -10138,7 +10138,7 @@ function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physi ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) end -mutable struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} fragmentShaderSampleInterlock::VkBool32 @@ -10146,7 +10146,7 @@ mutable struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT fragmentShaderShadingRateInterlock::VkBool32 end -mutable struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} ycbcrImageArrays::VkBool32 @@ -10154,7 +10154,7 @@ end const VkHeadlessSurfaceCreateFlagsEXT = VkFlags -mutable struct VkHeadlessSurfaceCreateInfoEXT +struct VkHeadlessSurfaceCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkHeadlessSurfaceCreateFlagsEXT @@ -10176,7 +10176,7 @@ end VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 end -mutable struct VkPhysicalDeviceLineRasterizationFeaturesEXT +struct VkPhysicalDeviceLineRasterizationFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} rectangularLines::VkBool32 @@ -10187,13 +10187,13 @@ mutable struct VkPhysicalDeviceLineRasterizationFeaturesEXT stippledSmoothLines::VkBool32 end -mutable struct VkPhysicalDeviceLineRasterizationPropertiesEXT +struct VkPhysicalDeviceLineRasterizationPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} lineSubPixelPrecisionBits::UInt32 end -mutable struct VkPipelineRasterizationLineStateCreateInfoEXT +struct VkPipelineRasterizationLineStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} lineRasterizationMode::VkLineRasterizationModeEXT @@ -10210,7 +10210,7 @@ function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePat ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -mutable struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} shaderBufferFloat32Atomics::VkBool32 @@ -10237,13 +10237,13 @@ function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) end -mutable struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} indexTypeUint8::VkBool32 end -mutable struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} extendedDynamicState::VkBool32 @@ -10345,7 +10345,7 @@ function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFail ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) end -mutable struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} shaderDemoteToHelperInvocation::VkBool32 @@ -10383,7 +10383,7 @@ end const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags -mutable struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} maxGraphicsShaderGroupCount::UInt32 @@ -10397,7 +10397,7 @@ mutable struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV minIndirectCommandsBufferOffsetAlignment::UInt32 end -mutable struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} deviceGeneratedCommands::VkBool32 @@ -10412,7 +10412,7 @@ struct VkGraphicsShaderGroupCreateInfoNV pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} end -mutable struct VkGraphicsPipelineShaderGroupsCreateInfoNV +struct VkGraphicsPipelineShaderGroupsCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} groupCount::UInt32 @@ -10421,23 +10421,23 @@ mutable struct VkGraphicsPipelineShaderGroupsCreateInfoNV pPipelines::Ptr{VkPipeline} end -mutable struct VkBindShaderGroupIndirectCommandNV +struct VkBindShaderGroupIndirectCommandNV groupIndex::UInt32 end -mutable struct VkBindIndexBufferIndirectCommandNV +struct VkBindIndexBufferIndirectCommandNV bufferAddress::VkDeviceAddress size::UInt32 indexType::VkIndexType end -mutable struct VkBindVertexBufferIndirectCommandNV +struct VkBindVertexBufferIndirectCommandNV bufferAddress::VkDeviceAddress size::UInt32 stride::UInt32 end -mutable struct VkSetStateFlagsIndirectCommandNV +struct VkSetStateFlagsIndirectCommandNV data::UInt32 end @@ -10464,7 +10464,7 @@ struct VkIndirectCommandsLayoutTokenNV pIndexTypeValues::Ptr{UInt32} end -mutable struct VkIndirectCommandsLayoutCreateInfoNV +struct VkIndirectCommandsLayoutCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} flags::VkIndirectCommandsLayoutUsageFlagsNV @@ -10475,7 +10475,7 @@ mutable struct VkIndirectCommandsLayoutCreateInfoNV pStreamStrides::Ptr{UInt32} end -mutable struct VkGeneratedCommandsInfoNV +struct VkGeneratedCommandsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} pipelineBindPoint::VkPipelineBindPoint @@ -10493,7 +10493,7 @@ mutable struct VkGeneratedCommandsInfoNV sequencesIndexOffset::VkDeviceSize end -mutable struct VkGeneratedCommandsMemoryRequirementsInfoNV +struct VkGeneratedCommandsMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} pipelineBindPoint::VkPipelineBindPoint @@ -10550,13 +10550,13 @@ function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllo ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -mutable struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} texelBufferAlignment::VkBool32 end -mutable struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} storageTexelBufferOffsetAlignmentBytes::VkDeviceSize @@ -10565,20 +10565,20 @@ mutable struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 end -mutable struct VkRenderPassTransformBeginInfoQCOM +struct VkRenderPassTransformBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} transform::VkSurfaceTransformFlagBitsKHR end -mutable struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} transform::VkSurfaceTransformFlagBitsKHR renderArea::VkRect2D end -mutable struct VkPhysicalDeviceRobustness2FeaturesEXT +struct VkPhysicalDeviceRobustness2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} robustBufferAccess2::VkBool32 @@ -10586,27 +10586,27 @@ mutable struct VkPhysicalDeviceRobustness2FeaturesEXT nullDescriptor::VkBool32 end -mutable struct VkPhysicalDeviceRobustness2PropertiesEXT +struct VkPhysicalDeviceRobustness2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} robustStorageBufferAccessSizeAlignment::VkDeviceSize robustUniformBufferAccessSizeAlignment::VkDeviceSize end -mutable struct VkSamplerCustomBorderColorCreateInfoEXT +struct VkSamplerCustomBorderColorCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} customBorderColor::VkClearColorValue format::VkFormat end -mutable struct VkPhysicalDeviceCustomBorderColorPropertiesEXT +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} maxCustomBorderColorSamplers::UInt32 end -mutable struct VkPhysicalDeviceCustomBorderColorFeaturesEXT +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} customBorderColors::VkBool32 @@ -10623,19 +10623,19 @@ end const VkPrivateDataSlotCreateFlagsEXT = VkFlags -mutable struct VkPhysicalDevicePrivateDataFeaturesEXT +struct VkPhysicalDevicePrivateDataFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} privateData::VkBool32 end -mutable struct VkDevicePrivateDataCreateInfoEXT +struct VkDevicePrivateDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} privateDataSlotRequestCount::UInt32 end -mutable struct VkPrivateDataSlotCreateInfoEXT +struct VkPrivateDataSlotCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkPrivateDataSlotCreateFlagsEXT @@ -10673,7 +10673,7 @@ function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) end -mutable struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} pipelineCreationCacheControl::VkBool32 @@ -10688,25 +10688,25 @@ end const VkDeviceDiagnosticsConfigFlagsNV = VkFlags -mutable struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} diagnosticsConfig::VkBool32 end -mutable struct VkDeviceDiagnosticsConfigCreateInfoNV +struct VkDeviceDiagnosticsConfigCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDeviceDiagnosticsConfigFlagsNV end -mutable struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} fragmentDensityMapDeferred::VkBool32 end -mutable struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} subsampledLoads::VkBool32 @@ -10715,13 +10715,13 @@ mutable struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT maxDescriptorSetSubsampledSamplers::UInt32 end -mutable struct VkPhysicalDeviceImageRobustnessFeaturesEXT +struct VkPhysicalDeviceImageRobustnessFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} robustImageAccess::VkBool32 end -mutable struct VkPhysicalDevice4444FormatsFeaturesEXT +struct VkPhysicalDevice4444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} formatA4R4G4B4::VkBool32 @@ -10732,7 +10732,7 @@ const VkAndroidSurfaceCreateFlagsKHR = VkFlags const ANativeWindow = Cvoid -mutable struct VkAndroidSurfaceCreateInfoKHR +struct VkAndroidSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkAndroidSurfaceCreateFlagsKHR @@ -10747,20 +10747,20 @@ function vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) ccall((:vkCreateAndroidSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkAndroidSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -mutable struct VkAndroidHardwareBufferUsageANDROID +struct VkAndroidHardwareBufferUsageANDROID sType::VkStructureType pNext::Ptr{Cvoid} androidHardwareBufferUsage::UInt64 end -mutable struct VkAndroidHardwareBufferPropertiesANDROID +struct VkAndroidHardwareBufferPropertiesANDROID sType::VkStructureType pNext::Ptr{Cvoid} allocationSize::VkDeviceSize memoryTypeBits::UInt32 end -mutable struct VkAndroidHardwareBufferFormatPropertiesANDROID +struct VkAndroidHardwareBufferFormatPropertiesANDROID sType::VkStructureType pNext::Ptr{Cvoid} format::VkFormat @@ -10775,19 +10775,19 @@ end const AHardwareBuffer = Cvoid -mutable struct VkImportAndroidHardwareBufferInfoANDROID +struct VkImportAndroidHardwareBufferInfoANDROID sType::VkStructureType pNext::Ptr{Cvoid} buffer::Ptr{AHardwareBuffer} end -mutable struct VkMemoryGetAndroidHardwareBufferInfoANDROID +struct VkMemoryGetAndroidHardwareBufferInfoANDROID sType::VkStructureType pNext::Ptr{Cvoid} memory::VkDeviceMemory end -mutable struct VkExternalFormatANDROID +struct VkExternalFormatANDROID sType::VkStructureType pNext::Ptr{Cvoid} externalFormat::UInt64 @@ -10811,7 +10811,7 @@ end const VkImagePipeSurfaceCreateFlagsFUCHSIA = VkFlags -mutable struct VkImagePipeSurfaceCreateInfoFUCHSIA +struct VkImagePipeSurfaceCreateInfoFUCHSIA sType::VkStructureType pNext::Ptr{Cvoid} flags::VkImagePipeSurfaceCreateFlagsFUCHSIA @@ -10828,7 +10828,7 @@ end const VkIOSSurfaceCreateFlagsMVK = VkFlags -mutable struct VkIOSSurfaceCreateInfoMVK +struct VkIOSSurfaceCreateInfoMVK sType::VkStructureType pNext::Ptr{Cvoid} flags::VkIOSSurfaceCreateFlagsMVK @@ -10845,7 +10845,7 @@ end const VkMacOSSurfaceCreateFlagsMVK = VkFlags -mutable struct VkMacOSSurfaceCreateInfoMVK +struct VkMacOSSurfaceCreateInfoMVK sType::VkStructureType pNext::Ptr{Cvoid} flags::VkMacOSSurfaceCreateFlagsMVK @@ -10864,7 +10864,7 @@ const CAMetalLayer = Cvoid const VkMetalSurfaceCreateFlagsEXT = VkFlags -mutable struct VkMetalSurfaceCreateInfoEXT +struct VkMetalSurfaceCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkMetalSurfaceCreateFlagsEXT @@ -10881,7 +10881,7 @@ end const VkViSurfaceCreateFlagsNN = VkFlags -mutable struct VkViSurfaceCreateInfoNN +struct VkViSurfaceCreateInfoNN sType::VkStructureType pNext::Ptr{Cvoid} flags::VkViSurfaceCreateFlagsNN @@ -10902,7 +10902,7 @@ const wl_display = Cvoid const wl_surface = Cvoid -mutable struct VkWaylandSurfaceCreateInfoKHR +struct VkWaylandSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkWaylandSurfaceCreateFlagsKHR @@ -10928,7 +10928,7 @@ end const VkWin32SurfaceCreateFlagsKHR = VkFlags -mutable struct VkWin32SurfaceCreateInfoKHR +struct VkWin32SurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkWin32SurfaceCreateFlagsKHR @@ -10952,7 +10952,7 @@ function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFam ccall((:vkGetPhysicalDeviceWin32PresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) end -mutable struct VkImportMemoryWin32HandleInfoKHR +struct VkImportMemoryWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} handleType::VkExternalMemoryHandleTypeFlagBits @@ -10960,7 +10960,7 @@ mutable struct VkImportMemoryWin32HandleInfoKHR name::Cint end -mutable struct VkExportMemoryWin32HandleInfoKHR +struct VkExportMemoryWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} pAttributes::Ptr{Cint} @@ -10974,7 +10974,7 @@ struct VkMemoryWin32HandlePropertiesKHR memoryTypeBits::UInt32 end -mutable struct VkMemoryGetWin32HandleInfoKHR +struct VkMemoryGetWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} memory::VkDeviceMemory @@ -10997,7 +10997,7 @@ function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemory ccall((:vkGetMemoryWin32HandlePropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) end -mutable struct VkWin32KeyedMutexAcquireReleaseInfoKHR +struct VkWin32KeyedMutexAcquireReleaseInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} acquireCount::UInt32 @@ -11009,7 +11009,7 @@ mutable struct VkWin32KeyedMutexAcquireReleaseInfoKHR pReleaseKeys::Ptr{UInt64} end -mutable struct VkImportSemaphoreWin32HandleInfoKHR +struct VkImportSemaphoreWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} semaphore::VkSemaphore @@ -11019,7 +11019,7 @@ mutable struct VkImportSemaphoreWin32HandleInfoKHR name::Cint end -mutable struct VkExportSemaphoreWin32HandleInfoKHR +struct VkExportSemaphoreWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} pAttributes::Ptr{Cint} @@ -11027,7 +11027,7 @@ mutable struct VkExportSemaphoreWin32HandleInfoKHR name::Cint end -mutable struct VkD3D12FenceSubmitInfoKHR +struct VkD3D12FenceSubmitInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} waitSemaphoreValuesCount::UInt32 @@ -11036,7 +11036,7 @@ mutable struct VkD3D12FenceSubmitInfoKHR pSignalSemaphoreValues::Ptr{UInt64} end -mutable struct VkSemaphoreGetWin32HandleInfoKHR +struct VkSemaphoreGetWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} semaphore::VkSemaphore @@ -11059,7 +11059,7 @@ function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) ccall((:vkGetSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) end -mutable struct VkImportFenceWin32HandleInfoKHR +struct VkImportFenceWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} fence::VkFence @@ -11069,7 +11069,7 @@ mutable struct VkImportFenceWin32HandleInfoKHR name::Cint end -mutable struct VkExportFenceWin32HandleInfoKHR +struct VkExportFenceWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} pAttributes::Ptr{Cint} @@ -11077,7 +11077,7 @@ mutable struct VkExportFenceWin32HandleInfoKHR name::Cint end -mutable struct VkFenceGetWin32HandleInfoKHR +struct VkFenceGetWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} fence::VkFence @@ -11100,14 +11100,14 @@ function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) ccall((:vkGetFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) end -mutable struct VkImportMemoryWin32HandleInfoNV +struct VkImportMemoryWin32HandleInfoNV sType::VkStructureType pNext::Ptr{Cvoid} handleType::VkExternalMemoryHandleTypeFlagsNV handle::Cint end -mutable struct VkExportMemoryWin32HandleInfoNV +struct VkExportMemoryWin32HandleInfoNV sType::VkStructureType pNext::Ptr{Cvoid} pAttributes::Ptr{Cint} @@ -11122,7 +11122,7 @@ function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle) ccall((:vkGetMemoryWin32HandleNV, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{Cint}), device, memory, handleType, pHandle) end -mutable struct VkWin32KeyedMutexAcquireReleaseInfoNV +struct VkWin32KeyedMutexAcquireReleaseInfoNV sType::VkStructureType pNext::Ptr{Cvoid} acquireCount::UInt32 @@ -11142,19 +11142,19 @@ end VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 2147483647 end -mutable struct VkSurfaceFullScreenExclusiveInfoEXT +struct VkSurfaceFullScreenExclusiveInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} fullScreenExclusive::VkFullScreenExclusiveEXT end -mutable struct VkSurfaceCapabilitiesFullScreenExclusiveEXT +struct VkSurfaceCapabilitiesFullScreenExclusiveEXT sType::VkStructureType pNext::Ptr{Cvoid} fullScreenExclusiveSupported::VkBool32 end -mutable struct VkSurfaceFullScreenExclusiveWin32InfoEXT +struct VkSurfaceFullScreenExclusiveWin32InfoEXT sType::VkStructureType pNext::Ptr{Cvoid} hmonitor::Cint @@ -11194,7 +11194,7 @@ end const VkXcbSurfaceCreateFlagsKHR = VkFlags -mutable struct VkXcbSurfaceCreateInfoKHR +struct VkXcbSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkXcbSurfaceCreateFlagsKHR @@ -11220,7 +11220,7 @@ end const VkXlibSurfaceCreateFlagsKHR = VkFlags -mutable struct VkXlibSurfaceCreateInfoKHR +struct VkXlibSurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} flags::VkXlibSurfaceCreateFlagsKHR @@ -11246,7 +11246,7 @@ end const VkDirectFBSurfaceCreateFlagsEXT = VkFlags -mutable struct VkDirectFBSurfaceCreateInfoEXT +struct VkDirectFBSurfaceCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} flags::VkDirectFBSurfaceCreateFlagsEXT @@ -11288,7 +11288,7 @@ end const VkStreamDescriptorSurfaceCreateFlagsGGP = VkFlags -mutable struct VkStreamDescriptorSurfaceCreateInfoGGP +struct VkStreamDescriptorSurfaceCreateInfoGGP sType::VkStructureType pNext::Ptr{Cvoid} flags::VkStreamDescriptorSurfaceCreateFlagsGGP @@ -11303,7 +11303,7 @@ function vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, p ccall((:vkCreateStreamDescriptorSurfaceGGP, libvulkan), VkResult, (VkInstance, Ptr{VkStreamDescriptorSurfaceCreateInfoGGP}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) end -mutable struct VkPresentFrameTokenGGP +struct VkPresentFrameTokenGGP sType::VkStructureType pNext::Ptr{Cvoid} frameToken::Cint @@ -11313,7 +11313,7 @@ const VkDeferredOperationKHR_T = Cvoid const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} -mutable struct VkDeferredOperationInfoKHR +struct VkDeferredOperationInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} operationHandle::VkDeferredOperationKHR @@ -11455,7 +11455,7 @@ struct VkRayTracingPipelineCreateInfoKHR basePipelineIndex::Int32 end -mutable struct VkAccelerationStructureGeometryTrianglesDataKHR +struct VkAccelerationStructureGeometryTrianglesDataKHR sType::VkStructureType pNext::Ptr{Cvoid} vertexFormat::VkFormat @@ -11466,14 +11466,14 @@ mutable struct VkAccelerationStructureGeometryTrianglesDataKHR transformData::VkDeviceOrHostAddressConstKHR end -mutable struct VkAccelerationStructureGeometryAabbsDataKHR +struct VkAccelerationStructureGeometryAabbsDataKHR sType::VkStructureType pNext::Ptr{Cvoid} data::VkDeviceOrHostAddressConstKHR stride::VkDeviceSize end -mutable struct VkAccelerationStructureGeometryInstancesDataKHR +struct VkAccelerationStructureGeometryInstancesDataKHR sType::VkStructureType pNext::Ptr{Cvoid} arrayOfPointers::VkBool32 @@ -11534,7 +11534,7 @@ struct VkAccelerationStructureCreateGeometryTypeInfoKHR allowsTransforms::VkBool32 end -mutable struct VkAccelerationStructureCreateInfoKHR +struct VkAccelerationStructureCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} compactedSize::VkDeviceSize @@ -11545,7 +11545,7 @@ mutable struct VkAccelerationStructureCreateInfoKHR deviceAddress::VkDeviceAddress end -mutable struct VkAccelerationStructureMemoryRequirementsInfoKHR +struct VkAccelerationStructureMemoryRequirementsInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} type::VkAccelerationStructureMemoryRequirementsTypeKHR @@ -11553,7 +11553,7 @@ mutable struct VkAccelerationStructureMemoryRequirementsInfoKHR accelerationStructure::VkAccelerationStructureKHR end -mutable struct VkPhysicalDeviceRayTracingFeaturesKHR +struct VkPhysicalDeviceRayTracingFeaturesKHR sType::VkStructureType pNext::Ptr{Cvoid} rayTracing::VkBool32 @@ -11567,7 +11567,7 @@ mutable struct VkPhysicalDeviceRayTracingFeaturesKHR rayTracingPrimitiveCulling::VkBool32 end -mutable struct VkPhysicalDeviceRayTracingPropertiesKHR +struct VkPhysicalDeviceRayTracingPropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} shaderGroupHandleSize::UInt32 @@ -11581,13 +11581,13 @@ mutable struct VkPhysicalDeviceRayTracingPropertiesKHR shaderGroupHandleCaptureReplaySize::UInt32 end -mutable struct VkAccelerationStructureDeviceAddressInfoKHR +struct VkAccelerationStructureDeviceAddressInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} accelerationStructure::VkAccelerationStructureKHR end -mutable struct VkAccelerationStructureVersionKHR +struct VkAccelerationStructureVersionKHR sType::VkStructureType pNext::Ptr{Cvoid} versionData::Ptr{UInt8} @@ -11600,13 +11600,13 @@ struct VkStridedBufferRegionKHR size::VkDeviceSize end -mutable struct VkTraceRaysIndirectCommandKHR +struct VkTraceRaysIndirectCommandKHR width::UInt32 height::UInt32 depth::UInt32 end -mutable struct VkCopyAccelerationStructureToMemoryInfoKHR +struct VkCopyAccelerationStructureToMemoryInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} src::VkAccelerationStructureKHR @@ -11614,7 +11614,7 @@ mutable struct VkCopyAccelerationStructureToMemoryInfoKHR mode::VkCopyAccelerationStructureModeKHR end -mutable struct VkCopyMemoryToAccelerationStructureInfoKHR +struct VkCopyMemoryToAccelerationStructureInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} src::VkDeviceOrHostAddressConstKHR @@ -11622,7 +11622,7 @@ mutable struct VkCopyMemoryToAccelerationStructureInfoKHR mode::VkCopyAccelerationStructureModeKHR end -mutable struct VkCopyAccelerationStructureInfoKHR +struct VkCopyAccelerationStructureInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} src::VkAccelerationStructureKHR From 7abaa3208a59eaaf5a2100cc042a0c41f5cc394f Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Wed, 5 May 2021 01:48:58 +0900 Subject: [PATCH 14/17] Add cross-platform support --- Project.toml | 2 +- gen/Manifest.toml | 257 + gen/Project.toml | 14 + gen/definitions.jl | 33 - gen/generator.jl | 141 +- gen/generator.toml | 18 - gen/prologue.jl | 75 - lib/aarch64-apple-darwin20.jl | 11524 ++++++++++++++++++++++++ lib/aarch64-linux-gnu.jl | 11614 ++++++++++++++++++++++++ lib/aarch64-linux-musl.jl | 11614 ++++++++++++++++++++++++ lib/armv7l-linux-gnueabihf.jl | 11548 ++++++++++++++++++++++++ lib/armv7l-linux-musleabihf.jl | 11548 ++++++++++++++++++++++++ lib/i686-linux-gnu.jl | 11548 ++++++++++++++++++++++++ lib/i686-linux-musl.jl | 11548 ++++++++++++++++++++++++ lib/i686-w64-mingw32.jl | 11753 +++++++++++++++++++++++++ lib/powerpc64le-linux-gnu.jl | 11614 ++++++++++++++++++++++++ lib/x86_64-apple-darwin14.jl | 11524 ++++++++++++++++++++++++ lib/x86_64-linux-gnu.jl | 11614 ++++++++++++++++++++++++ lib/x86_64-linux-musl.jl | 11614 ++++++++++++++++++++++++ lib/x86_64-unknown-freebsd11.1.jl | 11578 ++++++++++++++++++++++++ lib/x86_64-w64-mingw32.jl | 11819 +++++++++++++++++++++++++ src/LibVulkan.jl | 13160 +--------------------------- 22 files changed, 162855 insertions(+), 13305 deletions(-) create mode 100644 gen/Manifest.toml create mode 100644 gen/Project.toml delete mode 100644 gen/definitions.jl delete mode 100644 gen/generator.toml delete mode 100644 gen/prologue.jl create mode 100644 lib/aarch64-apple-darwin20.jl create mode 100644 lib/aarch64-linux-gnu.jl create mode 100644 lib/aarch64-linux-musl.jl create mode 100644 lib/armv7l-linux-gnueabihf.jl create mode 100644 lib/armv7l-linux-musleabihf.jl create mode 100644 lib/i686-linux-gnu.jl create mode 100644 lib/i686-linux-musl.jl create mode 100644 lib/i686-w64-mingw32.jl create mode 100644 lib/powerpc64le-linux-gnu.jl create mode 100644 lib/x86_64-apple-darwin14.jl create mode 100644 lib/x86_64-linux-gnu.jl create mode 100644 lib/x86_64-linux-musl.jl create mode 100644 lib/x86_64-unknown-freebsd11.1.jl create mode 100644 lib/x86_64-w64-mingw32.jl diff --git a/Project.toml b/Project.toml index 68ac9cf..43c1c5a 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "VulkanCore" uuid = "16167f82-ea26-5cba-b1de-ed6fd5e30a11" -version = "1.2.3" +version = "1.2.4" [deps] Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" diff --git a/gen/Manifest.toml b/gen/Manifest.toml new file mode 100644 index 0000000..d2b2886 --- /dev/null +++ b/gen/Manifest.toml @@ -0,0 +1,257 @@ +# This file is machine-generated - editing it directly is not advised + +[[ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" + +[[Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[CEnum]] +git-tree-sha1 = "215a9aa4a1f23fbd05b92769fdd62559488d70e9" +uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" +version = "0.4.1" + +[[Clang]] +deps = ["CEnum", "Clang_jll", "Downloads", "Pkg", "TOML"] +path = "/Users/gnimuc/.julia/dev/Clang" +uuid = "40e3b903-d033-50b4-a0cc-940c62c95e31" +version = "0.14.0" + +[[Clang_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "libLLVM_jll"] +git-tree-sha1 = "a5923c06de3178dd755f4b9411ea8922a7ae6fb8" +uuid = "0ee61d77-7f21-5576-8119-9fcc46b10100" +version = "11.0.1+3" + +[[Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[Downloads]] +deps = ["ArgTools", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" + +[[Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "1402e52fcda25064f51c77a9655ce8680b76acf0" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.2.7+6" + +[[InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[JLLWrappers]] +deps = ["Preferences"] +git-tree-sha1 = "642a199af8b68253517b80bd3bfd17eb4e84df6e" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.3.0" + +[[LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" + +[[LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" + +[[LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" + +[[Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[Libffi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "a2cd088a88c0d37eef7d209fd3d8712febce0d90" +uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" +version = "3.2.1+4" + +[[Libgcrypt_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] +git-tree-sha1 = "b391a18ab1170a2e568f9fb8d83bc7c780cb9999" +uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" +version = "1.8.5+4" + +[[Libgpg_error_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "ec7f2e8ad5c9fa99fc773376cdbc86d9a5a23cb7" +uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" +version = "1.36.0+3" + +[[Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "8e924324b2e9275a51407a4e06deb3455b1e359f" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.16.0+7" + +[[Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" + +[[MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" + +[[NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" + +[[Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" + +[[Preferences]] +deps = ["TOML"] +git-tree-sha1 = "ea79e4c9077208cd3bc5d29631a26bc0cff78902" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.2.1" + +[[Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[Random]] +deps = ["Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" + +[[Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" + +[[Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" + +[[UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[Vulkan_Headers_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f43bb806a557d5d71c79e1c814f5980be91f194e" +uuid = "8d446b21-f3ad-5576-a034-752265b9b6f9" +version = "1.2.177+0" + +[[Wayland_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "dc643a9b774da1c2781413fd7b6dcd2c56bb8056" +uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +version = "1.17.0+4" + +[[XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "afd2b541e8fd425cd3b7aa55932a257035ab4a70" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.9.11+0" + +[[XSLT_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "2b3eac39df218762d2d005702d601cd44c997497" +uuid = "aed1982a-8fda-507f-9586-7b0439959a61" +version = "1.1.33+4" + +[[Xorg_libX11_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "5be649d550f3f4b95308bf0183b82e2582876527" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.6.9+4" + +[[Xorg_libXau_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4e490d5c960c314f33885790ed410ff3a94ce67e" +uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" +version = "1.0.9+4" + +[[Xorg_libXdmcp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4fe47bd2247248125c428978740e18a681372dd4" +uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" +version = "1.1.3+4" + +[[Xorg_libXext_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" +uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" +version = "1.3.4+4" + +[[Xorg_libXrandr_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" +uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +version = "1.5.2+4" + +[[Xorg_libXrender_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" +uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +version = "0.9.10+4" + +[[Xorg_libpthread_stubs_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "6783737e45d3c59a4a4c4091f5f88cdcf0908cbb" +uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" +version = "0.1.0+3" + +[[Xorg_libxcb_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] +git-tree-sha1 = "daf17f441228e7a3833846cd048892861cff16d6" +uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +version = "1.13.0+3" + +[[Xorg_xorgproto_jll]] +deps = ["Libdl", "Pkg"] +git-tree-sha1 = "9a9eb8ce756fe0bca01b4be16da770e18d264972" +uuid = "c4d99508-4286-5418-9131-c86396af500b" +version = "2019.2.0+2" + +[[Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "79c31e7844f6ecf779705fbc12146eb190b7d845" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.4.0+3" + +[[Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" + +[[libLLVM_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8f36deef-c2a5-5394-99ed-8e07531fb29a" + +[[nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" + +[[p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" diff --git a/gen/Project.toml b/gen/Project.toml new file mode 100644 index 0000000..8810b10 --- /dev/null +++ b/gen/Project.toml @@ -0,0 +1,14 @@ +[deps] +Clang = "40e3b903-d033-50b4-a0cc-940c62c95e31" +Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +Vulkan_Headers_jll = "8d446b21-f3ad-5576-a034-752265b9b6f9" +Wayland_jll = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +Xorg_libX11_jll = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +Xorg_libXrandr_jll = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +Xorg_libXrender_jll = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +Xorg_libxcb_jll = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +Xorg_xorgproto_jll = "c4d99508-4286-5418-9131-c86396af500b" + +[compat] +Clang = "0.14.0" +Vulkan_Headers_jll = "1.2.177" diff --git a/gen/definitions.jl b/gen/definitions.jl deleted file mode 100644 index cc19f80..0000000 --- a/gen/definitions.jl +++ /dev/null @@ -1,33 +0,0 @@ -# X11/X.h -@add_def Window AbstractJuliaSDT -@add_def VisualID AbstractJuliaSDT -# X11/Xlib.h -@add_def Display -# X11/Xrandr.h -@add_def RROutput -# xcb.h -@add_def xcb_connection_t -@add_def xcb_window_t -@add_def xcb_visualid_t -# Wayland -@add_def wl_display -@add_def wl_surface -# Mir -@add_def MirConnection -@add_def MirSurface -# Windows -@add_def HINSTANCE -@add_def HWND -@add_def HMONITOR -@add_def HANDLE -@add_def DWORD -@add_def LPCWSTR -@add_def SECURITY_ATTRIBUTES -# DirectFB -@add_def IDirectFB -@add_def IDirectFBSurface -# Zircon -@add_def zx_handle_t -# GGP C -@add_def GgpStreamDescriptor -@add_def GgpFrameToken diff --git a/gen/generator.jl b/gen/generator.jl index 621357f..961a9f7 100755 --- a/gen/generator.jl +++ b/gen/generator.jl @@ -1,60 +1,91 @@ -using Clang - +using Clang.Generators +using Clang.Generators.JLLEnvs import Vulkan_Headers_jll +using Wayland_jll +using Xorg_libxcb_jll +using Xorg_xorgproto_jll +using Xorg_libX11_jll +using Xorg_libXrandr_jll +using Xorg_libXrender_jll +cd(@__DIR__) # get include directory & vulkan.h -VK_INCLUDE_ROOT = joinpath(Vulkan_Headers_jll.artifact_dir, "include") -VK_HEADERS = [joinpath(VK_INCLUDE_ROOT, "vulkan", "vulkan.h")] - -# include all extensions -VK_EXTENSIONS = [ - "VK_USE_PLATFORM_DIRECTFB_EXT", - "VK_USE_PLATFORM_ANDROID_KHR", - "VK_USE_PLATFORM_FUCHSIA", - "VK_USE_PLATFORM_IOS_MVK", - "VK_USE_PLATFORM_MACOS_MVK", - "VK_USE_PLATFORM_METAL_EXT", - "VK_USE_PLATFORM_VI_NN", - "VK_USE_PLATFORM_WAYLAND_KHR", - "VK_USE_PLATFORM_WIN32_KHR", - "VK_USE_PLATFORM_XCB_KHR", - "VK_USE_PLATFORM_XLIB_KHR", - "VK_USE_PLATFORM_XLIB_XRANDR_EXT", - "VK_USE_PLATFORM_GGP", - "VK_USE_PLATFORM_SCREEN_QNX", - "VK_ENABLE_BETA_EXTENSIONS", - ] - -common_file = joinpath(@__DIR__, "vk_common.jl") -api_file = joinpath(@__DIR__, "vk_api.jl") - -wc = init(; headers=VK_HEADERS, -output_file=api_file, - common_file=common_file, - clang_includes=vcat(VK_INCLUDE_ROOT, CLANG_INCLUDE), - clang_args="-D" .* VK_EXTENSIONS, - header_wrapped=(root, current) -> startswith(current, VK_INCLUDE_ROOT), - header_library=x -> "libvulkan", - clang_diagnostics=true, - ) - -# it should complain that some header files are not present (zircon/types.h, wayland-client.h...) but it should be OK since nothing from those files is actually wrapped -run(wc) - -api_str = join(readlines(api_file), "\n") - -# add an additional method which uses a function pointer for each API function -wrapped_funcs = String[] -for func ∈ eachmatch(r"function (.*)\((.*)\)\n (ccall.*)\nend", api_str) - name, args, body = func.captures - wrapped_func = """ - function $name($args, fun_ptr) - $(replace(body, "(:$name, libvulkan)" => "fun_ptr")) - end - """ - push!(wrapped_funcs, wrapped_func) -end -open(api_file, "a+") do io - write(io, "\n" * join(wrapped_funcs, "\n")) +const VK_INCLUDE = joinpath(Vulkan_Headers_jll.artifact_dir, "include", "vulkan") +const VK_HEADERS = [joinpath(VK_INCLUDE, "vulkan.h")] + +# config extensions for different platforms +# X-ref: https://github.com/SaschaWillems/Vulkan/blob/master/CMakeLists.txt +const VK_LINUX_EXTENSION_COMMON = [ + # "-DVK_USE_PLATFORM_DIRECTFB_EXT", # no JLL package + "-DVK_USE_PLATFORM_WAYLAND_KHR", + "-DVK_USE_PLATFORM_XCB_KHR", + "-DVK_USE_PLATFORM_XLIB_KHR", + "-DVK_USE_PLATFORM_XLIB_XRANDR_EXT", +] +const VK_MACOS_EXTENSION_COMMON = ["-DVK_USE_PLATFORM_MACOS_MVK", "-DVK_USE_PLATFORM_METAL_EXT"] +const VK_WIN_EXTENSION_COMMON = ["-DVK_USE_PLATFORM_WIN32_KHR"] +const VK_EXTENSIONS_MAP = Dict( + # "aarch64-apple-darwin20" => vcat(VK_MACOS_EXTENSION_COMMON, "-DVK_USE_PLATFORM_DIRECTFB_EXT"), + # "x86_64-apple-darwin14" => vcat(VK_MACOS_EXTENSION_COMMON, "-DVK_USE_PLATFORM_DIRECTFB_EXT"), + "aarch64-apple-darwin20" => VK_MACOS_EXTENSION_COMMON, + "x86_64-apple-darwin14" => VK_MACOS_EXTENSION_COMMON, + "i686-w64-mingw32" => VK_WIN_EXTENSION_COMMON, + "x86_64-w64-mingw32" => VK_WIN_EXTENSION_COMMON, + # "aarch64-linux-gnu" => vcat(VK_LINUX_EXTENSION_COMMON, "-DVK_USE_PLATFORM_FUCHSIA"), + # "aarch64-linux-musl" => vcat(VK_LINUX_EXTENSION_COMMON, "-DVK_USE_PLATFORM_FUCHSIA"), + "aarch64-linux-gnu" => VK_LINUX_EXTENSION_COMMON, + "aarch64-linux-musl" => VK_LINUX_EXTENSION_COMMON, + "armv7l-linux-gnueabihf" => VK_LINUX_EXTENSION_COMMON, + "armv7l-linux-musleabihf" => VK_LINUX_EXTENSION_COMMON, + "x86_64-linux-gnu" => VK_LINUX_EXTENSION_COMMON, + "x86_64-linux-musl" => VK_LINUX_EXTENSION_COMMON, + "i686-linux-gnu" => VK_LINUX_EXTENSION_COMMON, + "i686-linux-musl" => VK_LINUX_EXTENSION_COMMON, + "powerpc64le-linux-gnu" => VK_LINUX_EXTENSION_COMMON, + "x86_64-unknown-freebsd11.1" => ["-DVK_USE_PLATFORM_XCB_KHR", "-DVK_USE_PLATFORM_XLIB_KHR", "-DVK_USE_PLATFORM_XLIB_XRANDR_EXT"], +) + +for target in JLLEnvs.JLL_ENV_TRIPLES + @info "processing $target" + + # programmatically add options + options = Dict{String,Any}( + "general" => Dict{String,Any}(), + "codegen" => Dict{String,Any}(), + ) + general, codegen = options["general"], options["codegen"] + general["library_name"] = "libvulkan" + general["output_file_path"] = joinpath(@__DIR__, "..", "lib", "$target.jl") + general["use_deterministic_symbol"] = true + general["print_using_CEnum"] = false + codegen["opaque_as_mutable_struct"] = false + + # add compiler flags + args = get_default_args(target) + push!(args, "-I$VK_INCLUDE") + + wayland_inc = JLLEnvs.get_pkg_include_dir(Wayland_jll, target) + !isempty(wayland_inc) && push!(args, "-isystem$wayland_inc") + + xcb_inc = JLLEnvs.get_pkg_include_dir(Xorg_libxcb_jll, target) + !isempty(xcb_inc) && push!(args, "-isystem$xcb_inc") + + xlibx_inc = JLLEnvs.get_pkg_include_dir(Xorg_xorgproto_jll, target) + !isempty(xlibx_inc) && push!(args, "-isystem$xlibx_inc") + + xlib_inc = JLLEnvs.get_pkg_include_dir(Xorg_libX11_jll, target) + !isempty(xlib_inc) && push!(args, "-isystem$xlib_inc") + + xlibXrandr_inc = JLLEnvs.get_pkg_include_dir(Xorg_libXrandr_jll, target) + !isempty(xlibXrandr_inc) && push!(args, "-isystem$xlibXrandr_inc") + + xlibXrender_inc = JLLEnvs.get_pkg_include_dir(Xorg_libXrender_jll, target) + !isempty(xlibXrender_inc) && push!(args, "-isystem$xlibXrender_inc") + + append!(args, VK_EXTENSIONS_MAP[target]) + + ctx = create_context(VK_HEADERS, args, options) + + build!(ctx) end diff --git a/gen/generator.toml b/gen/generator.toml deleted file mode 100644 index 87e5cdf..0000000 --- a/gen/generator.toml +++ /dev/null @@ -1,18 +0,0 @@ -[general] -library_name = "libvulkan" - -output_file_path = "../src/LibVulkan.jl" - -module_name = "LibVulkan" - -export_symbol_prefixes = ["VK_", "Vk", "vk"] - -prologue_file_path = "./prologue.jl" -epilogue_file_path = "" - -auto_mutability = false -auto_mutability_blacklist = [] -auto_mutability_whitelist = [] - -[codegen] -opaque_as_mutable_struct = false \ No newline at end of file diff --git a/gen/prologue.jl b/gen/prologue.jl deleted file mode 100644 index 0c73c1d..0000000 --- a/gen/prologue.jl +++ /dev/null @@ -1,75 +0,0 @@ -import Libdl - -@static if !isempty(get(ENV, "JULIA_VULKAN_LIBNAME", "")) - const libvulkan = ENV["JULIA_VULKAN_LIBNAME"] -elseif Sys.iswindows() - const libvulkan = "vulkan-1.dll" -elseif Sys.isapple() - const libvulkan = "libvulkan.dylib" -elseif Sys.islinux() - const libvulkan = "libvulkan.so.1" -else - const libvulkan = "libvulkan" -end - -const libvulkan_handle = Ref{Ptr{Cvoid}}(0) - -function __init__() - libname = Libdl.find_library(libvulkan) - if isempty(libname) - error(""" - Failed to retrieve a valid Vulkan library called '$libvulkan'. - If you configure the `JULIA_VULKAN_LIBNAME` environment variable before precompiling VulkanCore, it will be used instead of '$libvulkan'. You may also manually add search paths by appending them to Lidbl.DL_LOAD_PATH, but note that this may have repercussions beyond this package. - """) - end - libvulkan_handle[] = Libdl.dlopen(libname) -end - -#### External definitions -VK_QUEUE_FAMILY_EXTERNAL = nothing -VK_SHADER_UNUSED_KHR = nothing - -# X11/X.h -const Window = Culong -const VisualID = Culong -# X11/Xlib.h -const Display = Cvoid # opaque struct -# X11/Xrandr.h -const RROutput = UInt32 -# xcb.h -const xcb_connection_t = Cvoid # opaque struct -const xcb_window_t = UInt32 -const xcb_visualid_t = UInt32 -# Wayland -const wl_display = Cvoid # opaque struct -const wl_surface = Cvoid # opaque struct -# Mir -const MirConnection = Cvoid # opaque struct -const MirSurface = Cvoid # opaque struct -# Windows -const HINSTANCE = Ptr{Cvoid} -const HWND = Ptr{Cvoid} -const HMONITOR = Ptr{Cvoid} -const HANDLE = HMONITOR -const DWORD = UInt32 -const LPCWSTR = UInt16 -const SECURITY_ATTRIBUTES = Cvoid # opaque struct -# DirectFB -const IDirectFB = Cvoid # opaque struct -const IDirectFBSurface = Cvoid # opaque struct -# Zircon -const zx_handle_t = UInt32 -# GGP C -const GgpStreamDescriptor = UInt32 -const GgpFrameToken = UInt32 - -# TODO: Clang.jl should support this kinda macros -VK_MAKE_VERSION(major, minor, patch) = (Cuint(major) << 22) | (Cuint(minor) << 12) | patch - -VK_VERSION_MAJOR(version) = Cuint(version) >> 22 -VK_VERSION_MINOR(version) = (Cuint(version) >> 12) & 0x3ff -VK_VERSION_PATCH(version) = Cuint(version) & 0xfff - -const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) -const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) -const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) diff --git a/lib/aarch64-apple-darwin20.jl b/lib/aarch64-apple-darwin20.jl new file mode 100644 index 0000000..2916f96 --- /dev/null +++ b/lib/aarch64-apple-darwin20.jl @@ -0,0 +1,11524 @@ +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkMacOSSurfaceCreateFlagsMVK = VkFlags + +struct VkMacOSSurfaceCreateInfoMVK + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMacOSSurfaceCreateFlagsMVK + pView::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMacOSSurfaceMVK ) ( VkInstance instance , const VkMacOSSurfaceCreateInfoMVK * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateMacOSSurfaceMVK = Ptr{Cvoid} + +function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateMacOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const CAMetalLayer = Cvoid + +const VkMetalSurfaceCreateFlagsEXT = VkFlags + +struct VkMetalSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMetalSurfaceCreateFlagsEXT + pLayer::Ptr{CAMetalLayer} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMetalSurfaceEXT ) ( VkInstance instance , const VkMetalSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateMetalSurfaceEXT = Ptr{Cvoid} + +function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateMetalSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_MACOS_H_ = 1 + +const VK_MVK_macos_surface = 1 + +const VK_MVK_MACOS_SURFACE_SPEC_VERSION = 3 + +const VK_MVK_MACOS_SURFACE_EXTENSION_NAME = "VK_MVK_macos_surface" + +const VULKAN_METAL_H_ = 1 + +const VK_EXT_metal_surface = 1 + +const VK_EXT_METAL_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_METAL_SURFACE_EXTENSION_NAME = "VK_EXT_metal_surface" + diff --git a/lib/aarch64-linux-gnu.jl b/lib/aarch64-linux-gnu.jl new file mode 100644 index 0000000..811ce02 --- /dev/null +++ b/lib/aarch64-linux-gnu.jl @@ -0,0 +1,11614 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/aarch64-linux-musl.jl b/lib/aarch64-linux-musl.jl new file mode 100644 index 0000000..811ce02 --- /dev/null +++ b/lib/aarch64-linux-musl.jl @@ -0,0 +1,11614 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/armv7l-linux-gnueabihf.jl b/lib/armv7l-linux-gnueabihf.jl new file mode 100644 index 0000000..2b59a22 --- /dev/null +++ b/lib/armv7l-linux-gnueabihf.jl @@ -0,0 +1,11548 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer = UInt64 + +const VkImage = UInt64 + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore = UInt64 + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence = UInt64 + +const VkDeviceMemory = UInt64 + +const VkEvent = UInt64 + +const VkQueryPool = UInt64 + +const VkBufferView = UInt64 + +const VkImageView = UInt64 + +const VkShaderModule = UInt64 + +const VkPipelineCache = UInt64 + +const VkPipelineLayout = UInt64 + +const VkPipeline = UInt64 + +const VkRenderPass = UInt64 + +const VkDescriptorSetLayout = UInt64 + +const VkSampler = UInt64 + +const VkDescriptorSet = UInt64 + +const VkDescriptorPool = UInt64 + +const VkFramebuffer = UInt64 + +const VkCommandPool = UInt64 + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion = UInt64 + +const VkDescriptorUpdateTemplate = UInt64 + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR = UInt64 + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR = UInt64 + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR = UInt64 + +const VkDisplayModeKHR = UInt64 + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT = UInt64 + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT = UInt64 + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT = UInt64 + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR = UInt64 + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL = UInt64 + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV = UInt64 + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT = UInt64 + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/armv7l-linux-musleabihf.jl b/lib/armv7l-linux-musleabihf.jl new file mode 100644 index 0000000..2b59a22 --- /dev/null +++ b/lib/armv7l-linux-musleabihf.jl @@ -0,0 +1,11548 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer = UInt64 + +const VkImage = UInt64 + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore = UInt64 + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence = UInt64 + +const VkDeviceMemory = UInt64 + +const VkEvent = UInt64 + +const VkQueryPool = UInt64 + +const VkBufferView = UInt64 + +const VkImageView = UInt64 + +const VkShaderModule = UInt64 + +const VkPipelineCache = UInt64 + +const VkPipelineLayout = UInt64 + +const VkPipeline = UInt64 + +const VkRenderPass = UInt64 + +const VkDescriptorSetLayout = UInt64 + +const VkSampler = UInt64 + +const VkDescriptorSet = UInt64 + +const VkDescriptorPool = UInt64 + +const VkFramebuffer = UInt64 + +const VkCommandPool = UInt64 + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion = UInt64 + +const VkDescriptorUpdateTemplate = UInt64 + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR = UInt64 + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR = UInt64 + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR = UInt64 + +const VkDisplayModeKHR = UInt64 + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT = UInt64 + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT = UInt64 + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT = UInt64 + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR = UInt64 + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL = UInt64 + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV = UInt64 + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT = UInt64 + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/i686-linux-gnu.jl b/lib/i686-linux-gnu.jl new file mode 100644 index 0000000..2b59a22 --- /dev/null +++ b/lib/i686-linux-gnu.jl @@ -0,0 +1,11548 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer = UInt64 + +const VkImage = UInt64 + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore = UInt64 + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence = UInt64 + +const VkDeviceMemory = UInt64 + +const VkEvent = UInt64 + +const VkQueryPool = UInt64 + +const VkBufferView = UInt64 + +const VkImageView = UInt64 + +const VkShaderModule = UInt64 + +const VkPipelineCache = UInt64 + +const VkPipelineLayout = UInt64 + +const VkPipeline = UInt64 + +const VkRenderPass = UInt64 + +const VkDescriptorSetLayout = UInt64 + +const VkSampler = UInt64 + +const VkDescriptorSet = UInt64 + +const VkDescriptorPool = UInt64 + +const VkFramebuffer = UInt64 + +const VkCommandPool = UInt64 + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion = UInt64 + +const VkDescriptorUpdateTemplate = UInt64 + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR = UInt64 + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR = UInt64 + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR = UInt64 + +const VkDisplayModeKHR = UInt64 + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT = UInt64 + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT = UInt64 + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT = UInt64 + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR = UInt64 + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL = UInt64 + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV = UInt64 + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT = UInt64 + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/i686-linux-musl.jl b/lib/i686-linux-musl.jl new file mode 100644 index 0000000..2b59a22 --- /dev/null +++ b/lib/i686-linux-musl.jl @@ -0,0 +1,11548 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer = UInt64 + +const VkImage = UInt64 + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore = UInt64 + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence = UInt64 + +const VkDeviceMemory = UInt64 + +const VkEvent = UInt64 + +const VkQueryPool = UInt64 + +const VkBufferView = UInt64 + +const VkImageView = UInt64 + +const VkShaderModule = UInt64 + +const VkPipelineCache = UInt64 + +const VkPipelineLayout = UInt64 + +const VkPipeline = UInt64 + +const VkRenderPass = UInt64 + +const VkDescriptorSetLayout = UInt64 + +const VkSampler = UInt64 + +const VkDescriptorSet = UInt64 + +const VkDescriptorPool = UInt64 + +const VkFramebuffer = UInt64 + +const VkCommandPool = UInt64 + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion = UInt64 + +const VkDescriptorUpdateTemplate = UInt64 + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR = UInt64 + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR = UInt64 + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR = UInt64 + +const VkDisplayModeKHR = UInt64 + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT = UInt64 + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT = UInt64 + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT = UInt64 + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR = UInt64 + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL = UInt64 + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV = UInt64 + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT = UInt64 + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/i686-w64-mingw32.jl b/lib/i686-w64-mingw32.jl new file mode 100644 index 0000000..1b4868a --- /dev/null +++ b/lib/i686-w64-mingw32.jl @@ -0,0 +1,11753 @@ +struct HMONITOR__ + unused::Cint +end + +const HMONITOR = Ptr{HMONITOR__} + +const DWORD = Culong + +const LPVOID = Ptr{Cvoid} + +const WINBOOL = Cint + +struct _SECURITY_ATTRIBUTES + nLength::DWORD + lpSecurityDescriptor::LPVOID + bInheritHandle::WINBOOL +end + +const SECURITY_ATTRIBUTES = _SECURITY_ATTRIBUTES + +const WCHAR = Cwchar_t + +const LPCWSTR = Ptr{WCHAR} + +const HANDLE = Ptr{Cvoid} + +struct HWND__ + unused::Cint +end + +const HWND = Ptr{HWND__} + +struct HINSTANCE__ + unused::Cint +end + +const HINSTANCE = Ptr{HINSTANCE__} + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer = UInt64 + +const VkImage = UInt64 + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore = UInt64 + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence = UInt64 + +const VkDeviceMemory = UInt64 + +const VkEvent = UInt64 + +const VkQueryPool = UInt64 + +const VkBufferView = UInt64 + +const VkImageView = UInt64 + +const VkShaderModule = UInt64 + +const VkPipelineCache = UInt64 + +const VkPipelineLayout = UInt64 + +const VkPipeline = UInt64 + +const VkRenderPass = UInt64 + +const VkDescriptorSetLayout = UInt64 + +const VkSampler = UInt64 + +const VkDescriptorSet = UInt64 + +const VkDescriptorPool = UInt64 + +const VkFramebuffer = UInt64 + +const VkCommandPool = UInt64 + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion = UInt64 + +const VkDescriptorUpdateTemplate = UInt64 + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR = UInt64 + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR = UInt64 + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR = UInt64 + +const VkDisplayModeKHR = UInt64 + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT = UInt64 + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT = UInt64 + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT = UInt64 + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR = UInt64 + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL = UInt64 + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV = UInt64 + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT = UInt64 + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWin32SurfaceCreateFlagsKHR = VkFlags + +struct VkWin32SurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWin32SurfaceCreateFlagsKHR + hinstance::HINSTANCE + hwnd::HWND +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWin32SurfaceKHR +const PFN_vkCreateWin32SurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR +const PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWin32SurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex) + ccall((:vkGetPhysicalDeviceWin32PresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) +end + +struct VkImportMemoryWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR +end + +struct VkExportMemoryWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR +end + +struct VkMemoryWin32HandlePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleKHR +const PFN_vkGetMemoryWin32HandleKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandlePropertiesKHR +const PFN_vkGetMemoryWin32HandlePropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetMemoryWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) +end + +function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties) + ccall((:vkGetMemoryWin32HandlePropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, HANDLE, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) +end + +struct VkWin32KeyedMutexAcquireReleaseInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + acquireCount::UInt32 + pAcquireSyncs::Ptr{VkDeviceMemory} + pAcquireKeys::Ptr{UInt64} + pAcquireTimeouts::Ptr{UInt32} + releaseCount::UInt32 + pReleaseSyncs::Ptr{VkDeviceMemory} + pReleaseKeys::Ptr{UInt64} +end + +struct VkImportSemaphoreWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR +end + +struct VkExportSemaphoreWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR +end + +struct VkD3D12FenceSubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValuesCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValuesCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreGetWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreWin32HandleKHR +const PFN_vkImportSemaphoreWin32HandleKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreWin32HandleKHR +const PFN_vkGetSemaphoreWin32HandleKHR = Ptr{Cvoid} + +function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo) + ccall((:vkImportSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) +end + +function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) +end + +struct VkImportFenceWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR +end + +struct VkExportFenceWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR +end + +struct VkFenceGetWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceWin32HandleKHR +const PFN_vkImportFenceWin32HandleKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceWin32HandleKHR +const PFN_vkGetFenceWin32HandleKHR = Ptr{Cvoid} + +function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo) + ccall((:vkImportFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) +end + +function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) +end + +struct VkImportMemoryWin32HandleInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagsNV + handle::HANDLE +end + +struct VkExportMemoryWin32HandleInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleNV +const PFN_vkGetMemoryWin32HandleNV = Ptr{Cvoid} + +function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle) + ccall((:vkGetMemoryWin32HandleNV, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{HANDLE}), device, memory, handleType, pHandle) +end + +struct VkWin32KeyedMutexAcquireReleaseInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + acquireCount::UInt32 + pAcquireSyncs::Ptr{VkDeviceMemory} + pAcquireKeys::Ptr{UInt64} + pAcquireTimeoutMilliseconds::Ptr{UInt32} + releaseCount::UInt32 + pReleaseSyncs::Ptr{VkDeviceMemory} + pReleaseKeys::Ptr{UInt64} +end + +@cenum VkFullScreenExclusiveEXT::UInt32 begin + VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0 + VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1 + VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2 + VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3 + VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 2147483647 +end + +struct VkSurfaceFullScreenExclusiveInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fullScreenExclusive::VkFullScreenExclusiveEXT +end + +struct VkSurfaceCapabilitiesFullScreenExclusiveEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fullScreenExclusiveSupported::VkBool32 +end + +struct VkSurfaceFullScreenExclusiveWin32InfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + hmonitor::HMONITOR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT +const PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireFullScreenExclusiveModeEXT +const PFN_vkAcquireFullScreenExclusiveModeEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseFullScreenExclusiveModeEXT +const PFN_vkReleaseFullScreenExclusiveModeEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModes2EXT +const PFN_vkGetDeviceGroupSurfacePresentModes2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModes2EXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) +end + +function vkAcquireFullScreenExclusiveModeEXT(device, swapchain) + ccall((:vkAcquireFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +function vkReleaseFullScreenExclusiveModeEXT(device, swapchain) + ccall((:vkReleaseFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModes2EXT, libvulkan), VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) +end + +const VULKAN_H_ = 1 + +const VKAPI_CALL = __stdcall + +const VKAPI_PTR = VKAPI_CALL + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WIN32_H_ = 1 + +const VK_KHR_win32_surface = 1 + +const VK_KHR_WIN32_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface" + +const VK_KHR_external_memory_win32 = 1 + +const VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_KHR_external_memory_win32" + +const VK_KHR_win32_keyed_mutex = 1 + +const VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION = 1 + +const VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_KHR_win32_keyed_mutex" + +const VK_KHR_external_semaphore_win32 = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME = "VK_KHR_external_semaphore_win32" + +const VK_KHR_external_fence_win32 = 1 + +const VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME = "VK_KHR_external_fence_win32" + +const VK_NV_external_memory_win32 = 1 + +const VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_NV_external_memory_win32" + +const VK_NV_win32_keyed_mutex = 1 + +const VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION = 2 + +const VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_NV_win32_keyed_mutex" + +const VK_EXT_full_screen_exclusive = 1 + +const VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION = 4 + +const VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME = "VK_EXT_full_screen_exclusive" + diff --git a/lib/powerpc64le-linux-gnu.jl b/lib/powerpc64le-linux-gnu.jl new file mode 100644 index 0000000..811ce02 --- /dev/null +++ b/lib/powerpc64le-linux-gnu.jl @@ -0,0 +1,11614 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/x86_64-apple-darwin14.jl b/lib/x86_64-apple-darwin14.jl new file mode 100644 index 0000000..2916f96 --- /dev/null +++ b/lib/x86_64-apple-darwin14.jl @@ -0,0 +1,11524 @@ +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkMacOSSurfaceCreateFlagsMVK = VkFlags + +struct VkMacOSSurfaceCreateInfoMVK + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMacOSSurfaceCreateFlagsMVK + pView::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMacOSSurfaceMVK ) ( VkInstance instance , const VkMacOSSurfaceCreateInfoMVK * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateMacOSSurfaceMVK = Ptr{Cvoid} + +function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateMacOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const CAMetalLayer = Cvoid + +const VkMetalSurfaceCreateFlagsEXT = VkFlags + +struct VkMetalSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMetalSurfaceCreateFlagsEXT + pLayer::Ptr{CAMetalLayer} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMetalSurfaceEXT ) ( VkInstance instance , const VkMetalSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateMetalSurfaceEXT = Ptr{Cvoid} + +function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateMetalSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_MACOS_H_ = 1 + +const VK_MVK_macos_surface = 1 + +const VK_MVK_MACOS_SURFACE_SPEC_VERSION = 3 + +const VK_MVK_MACOS_SURFACE_EXTENSION_NAME = "VK_MVK_macos_surface" + +const VULKAN_METAL_H_ = 1 + +const VK_EXT_metal_surface = 1 + +const VK_EXT_METAL_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_METAL_SURFACE_EXTENSION_NAME = "VK_EXT_metal_surface" + diff --git a/lib/x86_64-linux-gnu.jl b/lib/x86_64-linux-gnu.jl new file mode 100644 index 0000000..811ce02 --- /dev/null +++ b/lib/x86_64-linux-gnu.jl @@ -0,0 +1,11614 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/x86_64-linux-musl.jl b/lib/x86_64-linux-musl.jl new file mode 100644 index 0000000..811ce02 --- /dev/null +++ b/lib/x86_64-linux-musl.jl @@ -0,0 +1,11614 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/x86_64-unknown-freebsd11.1.jl b/lib/x86_64-unknown-freebsd11.1.jl new file mode 100644 index 0000000..c695a5d --- /dev/null +++ b/lib/x86_64-unknown-freebsd11.1.jl @@ -0,0 +1,11578 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/x86_64-w64-mingw32.jl b/lib/x86_64-w64-mingw32.jl new file mode 100644 index 0000000..019cf8e --- /dev/null +++ b/lib/x86_64-w64-mingw32.jl @@ -0,0 +1,11819 @@ +struct HMONITOR__ + unused::Cint +end + +const HMONITOR = Ptr{HMONITOR__} + +const DWORD = Culong + +const LPVOID = Ptr{Cvoid} + +const WINBOOL = Cint + +struct _SECURITY_ATTRIBUTES + nLength::DWORD + lpSecurityDescriptor::LPVOID + bInheritHandle::WINBOOL +end + +const SECURITY_ATTRIBUTES = _SECURITY_ATTRIBUTES + +const WCHAR = Cwchar_t + +const LPCWSTR = Ptr{WCHAR} + +const HANDLE = Ptr{Cvoid} + +struct HWND__ + unused::Cint +end + +const HWND = Ptr{HWND__} + +struct HINSTANCE__ + unused::Cint +end + +const HINSTANCE = Ptr{HINSTANCE__} + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_ERROR_SURFACE_LOST_KHR = -1000000000 + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 + VK_SUBOPTIMAL_KHR = 1000001003 + VK_ERROR_OUT_OF_DATE_KHR = -1000001004 + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 + VK_ERROR_INVALID_SHADER_NV = -1000012000 + VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 + VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 + VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 + VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 + VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 + VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 + VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 + VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 + VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 + VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 + VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 + VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 + VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 + VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 + VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 + VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 + VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 + VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 + VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 + VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 + VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 + VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 + VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 + VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 + VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 + VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 + VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 + VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 + VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 + VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 + VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 + VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 + VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 + VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 + VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 + VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 + VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 + VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 + VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 + VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + VK_OBJECT_TYPE_UNKNOWN = 0 + VK_OBJECT_TYPE_INSTANCE = 1 + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 + VK_OBJECT_TYPE_DEVICE = 3 + VK_OBJECT_TYPE_QUEUE = 4 + VK_OBJECT_TYPE_SEMAPHORE = 5 + VK_OBJECT_TYPE_COMMAND_BUFFER = 6 + VK_OBJECT_TYPE_FENCE = 7 + VK_OBJECT_TYPE_DEVICE_MEMORY = 8 + VK_OBJECT_TYPE_BUFFER = 9 + VK_OBJECT_TYPE_IMAGE = 10 + VK_OBJECT_TYPE_EVENT = 11 + VK_OBJECT_TYPE_QUERY_POOL = 12 + VK_OBJECT_TYPE_BUFFER_VIEW = 13 + VK_OBJECT_TYPE_IMAGE_VIEW = 14 + VK_OBJECT_TYPE_SHADER_MODULE = 15 + VK_OBJECT_TYPE_PIPELINE_CACHE = 16 + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 + VK_OBJECT_TYPE_RENDER_PASS = 18 + VK_OBJECT_TYPE_PIPELINE = 19 + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 + VK_OBJECT_TYPE_SAMPLER = 21 + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 + VK_OBJECT_TYPE_FRAMEBUFFER = 24 + VK_OBJECT_TYPE_COMMAND_POOL = 25 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + VK_FORMAT_UNDEFINED = 0 + VK_FORMAT_R4G4_UNORM_PACK8 = 1 + VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 + VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 + VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 + VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 + VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 + VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 + VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 + VK_FORMAT_R8_UNORM = 9 + VK_FORMAT_R8_SNORM = 10 + VK_FORMAT_R8_USCALED = 11 + VK_FORMAT_R8_SSCALED = 12 + VK_FORMAT_R8_UINT = 13 + VK_FORMAT_R8_SINT = 14 + VK_FORMAT_R8_SRGB = 15 + VK_FORMAT_R8G8_UNORM = 16 + VK_FORMAT_R8G8_SNORM = 17 + VK_FORMAT_R8G8_USCALED = 18 + VK_FORMAT_R8G8_SSCALED = 19 + VK_FORMAT_R8G8_UINT = 20 + VK_FORMAT_R8G8_SINT = 21 + VK_FORMAT_R8G8_SRGB = 22 + VK_FORMAT_R8G8B8_UNORM = 23 + VK_FORMAT_R8G8B8_SNORM = 24 + VK_FORMAT_R8G8B8_USCALED = 25 + VK_FORMAT_R8G8B8_SSCALED = 26 + VK_FORMAT_R8G8B8_UINT = 27 + VK_FORMAT_R8G8B8_SINT = 28 + VK_FORMAT_R8G8B8_SRGB = 29 + VK_FORMAT_B8G8R8_UNORM = 30 + VK_FORMAT_B8G8R8_SNORM = 31 + VK_FORMAT_B8G8R8_USCALED = 32 + VK_FORMAT_B8G8R8_SSCALED = 33 + VK_FORMAT_B8G8R8_UINT = 34 + VK_FORMAT_B8G8R8_SINT = 35 + VK_FORMAT_B8G8R8_SRGB = 36 + VK_FORMAT_R8G8B8A8_UNORM = 37 + VK_FORMAT_R8G8B8A8_SNORM = 38 + VK_FORMAT_R8G8B8A8_USCALED = 39 + VK_FORMAT_R8G8B8A8_SSCALED = 40 + VK_FORMAT_R8G8B8A8_UINT = 41 + VK_FORMAT_R8G8B8A8_SINT = 42 + VK_FORMAT_R8G8B8A8_SRGB = 43 + VK_FORMAT_B8G8R8A8_UNORM = 44 + VK_FORMAT_B8G8R8A8_SNORM = 45 + VK_FORMAT_B8G8R8A8_USCALED = 46 + VK_FORMAT_B8G8R8A8_SSCALED = 47 + VK_FORMAT_B8G8R8A8_UINT = 48 + VK_FORMAT_B8G8R8A8_SINT = 49 + VK_FORMAT_B8G8R8A8_SRGB = 50 + VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 + VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 + VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 + VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 + VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 + VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 + VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 + VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 + VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 + VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 + VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 + VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 + VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 + VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 + VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 + VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 + VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 + VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 + VK_FORMAT_R16_UNORM = 70 + VK_FORMAT_R16_SNORM = 71 + VK_FORMAT_R16_USCALED = 72 + VK_FORMAT_R16_SSCALED = 73 + VK_FORMAT_R16_UINT = 74 + VK_FORMAT_R16_SINT = 75 + VK_FORMAT_R16_SFLOAT = 76 + VK_FORMAT_R16G16_UNORM = 77 + VK_FORMAT_R16G16_SNORM = 78 + VK_FORMAT_R16G16_USCALED = 79 + VK_FORMAT_R16G16_SSCALED = 80 + VK_FORMAT_R16G16_UINT = 81 + VK_FORMAT_R16G16_SINT = 82 + VK_FORMAT_R16G16_SFLOAT = 83 + VK_FORMAT_R16G16B16_UNORM = 84 + VK_FORMAT_R16G16B16_SNORM = 85 + VK_FORMAT_R16G16B16_USCALED = 86 + VK_FORMAT_R16G16B16_SSCALED = 87 + VK_FORMAT_R16G16B16_UINT = 88 + VK_FORMAT_R16G16B16_SINT = 89 + VK_FORMAT_R16G16B16_SFLOAT = 90 + VK_FORMAT_R16G16B16A16_UNORM = 91 + VK_FORMAT_R16G16B16A16_SNORM = 92 + VK_FORMAT_R16G16B16A16_USCALED = 93 + VK_FORMAT_R16G16B16A16_SSCALED = 94 + VK_FORMAT_R16G16B16A16_UINT = 95 + VK_FORMAT_R16G16B16A16_SINT = 96 + VK_FORMAT_R16G16B16A16_SFLOAT = 97 + VK_FORMAT_R32_UINT = 98 + VK_FORMAT_R32_SINT = 99 + VK_FORMAT_R32_SFLOAT = 100 + VK_FORMAT_R32G32_UINT = 101 + VK_FORMAT_R32G32_SINT = 102 + VK_FORMAT_R32G32_SFLOAT = 103 + VK_FORMAT_R32G32B32_UINT = 104 + VK_FORMAT_R32G32B32_SINT = 105 + VK_FORMAT_R32G32B32_SFLOAT = 106 + VK_FORMAT_R32G32B32A32_UINT = 107 + VK_FORMAT_R32G32B32A32_SINT = 108 + VK_FORMAT_R32G32B32A32_SFLOAT = 109 + VK_FORMAT_R64_UINT = 110 + VK_FORMAT_R64_SINT = 111 + VK_FORMAT_R64_SFLOAT = 112 + VK_FORMAT_R64G64_UINT = 113 + VK_FORMAT_R64G64_SINT = 114 + VK_FORMAT_R64G64_SFLOAT = 115 + VK_FORMAT_R64G64B64_UINT = 116 + VK_FORMAT_R64G64B64_SINT = 117 + VK_FORMAT_R64G64B64_SFLOAT = 118 + VK_FORMAT_R64G64B64A64_UINT = 119 + VK_FORMAT_R64G64B64A64_SINT = 120 + VK_FORMAT_R64G64B64A64_SFLOAT = 121 + VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 + VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 + VK_FORMAT_D16_UNORM = 124 + VK_FORMAT_X8_D24_UNORM_PACK32 = 125 + VK_FORMAT_D32_SFLOAT = 126 + VK_FORMAT_S8_UINT = 127 + VK_FORMAT_D16_UNORM_S8_UINT = 128 + VK_FORMAT_D24_UNORM_S8_UINT = 129 + VK_FORMAT_D32_SFLOAT_S8_UINT = 130 + VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 + VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 + VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 + VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 + VK_FORMAT_BC2_UNORM_BLOCK = 135 + VK_FORMAT_BC2_SRGB_BLOCK = 136 + VK_FORMAT_BC3_UNORM_BLOCK = 137 + VK_FORMAT_BC3_SRGB_BLOCK = 138 + VK_FORMAT_BC4_UNORM_BLOCK = 139 + VK_FORMAT_BC4_SNORM_BLOCK = 140 + VK_FORMAT_BC5_UNORM_BLOCK = 141 + VK_FORMAT_BC5_SNORM_BLOCK = 142 + VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 + VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 + VK_FORMAT_BC7_UNORM_BLOCK = 145 + VK_FORMAT_BC7_SRGB_BLOCK = 146 + VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 + VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 + VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 + VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 + VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 + VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 + VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 + VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 + VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 + VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 + VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 + VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 + VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 + VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 + VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 + VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 + VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 + VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 + VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 + VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 + VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 + VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 + VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 + VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 + VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 + VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 + VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 + VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 + VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 + VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 + VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 + VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 + VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 + VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 + VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 + VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 + VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 + VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 + VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 + VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 + VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 + VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 + VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 + VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 + VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 + VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 + VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 + VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 + VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 + VK_FORMAT_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + VK_BLEND_OP_ADD = 0 + VK_BLEND_OP_SUBTRACT = 1 + VK_BLEND_OP_REVERSE_SUBTRACT = 2 + VK_BLEND_OP_MIN = 3 + VK_BLEND_OP_MAX = 4 + VK_BLEND_OP_ZERO_EXT = 1000148000 + VK_BLEND_OP_SRC_EXT = 1000148001 + VK_BLEND_OP_DST_EXT = 1000148002 + VK_BLEND_OP_SRC_OVER_EXT = 1000148003 + VK_BLEND_OP_DST_OVER_EXT = 1000148004 + VK_BLEND_OP_SRC_IN_EXT = 1000148005 + VK_BLEND_OP_DST_IN_EXT = 1000148006 + VK_BLEND_OP_SRC_OUT_EXT = 1000148007 + VK_BLEND_OP_DST_OUT_EXT = 1000148008 + VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 + VK_BLEND_OP_DST_ATOP_EXT = 1000148010 + VK_BLEND_OP_XOR_EXT = 1000148011 + VK_BLEND_OP_MULTIPLY_EXT = 1000148012 + VK_BLEND_OP_SCREEN_EXT = 1000148013 + VK_BLEND_OP_OVERLAY_EXT = 1000148014 + VK_BLEND_OP_DARKEN_EXT = 1000148015 + VK_BLEND_OP_LIGHTEN_EXT = 1000148016 + VK_BLEND_OP_COLORDODGE_EXT = 1000148017 + VK_BLEND_OP_COLORBURN_EXT = 1000148018 + VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 + VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 + VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 + VK_BLEND_OP_EXCLUSION_EXT = 1000148022 + VK_BLEND_OP_INVERT_EXT = 1000148023 + VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 + VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 + VK_BLEND_OP_LINEARBURN_EXT = 1000148026 + VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 + VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 + VK_BLEND_OP_PINLIGHT_EXT = 1000148029 + VK_BLEND_OP_HARDMIX_EXT = 1000148030 + VK_BLEND_OP_HSL_HUE_EXT = 1000148031 + VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 + VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 + VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 + VK_BLEND_OP_PLUS_EXT = 1000148035 + VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 + VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 + VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 + VK_BLEND_OP_MINUS_EXT = 1000148039 + VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 + VK_BLEND_OP_CONTRAST_EXT = 1000148041 + VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 + VK_BLEND_OP_RED_EXT = 1000148043 + VK_BLEND_OP_GREEN_EXT = 1000148044 + VK_BLEND_OP_BLUE_EXT = 1000148045 + VK_BLEND_OP_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + VK_DYNAMIC_STATE_VIEWPORT = 0 + VK_DYNAMIC_STATE_SCISSOR = 1 + VK_DYNAMIC_STATE_LINE_WIDTH = 2 + VK_DYNAMIC_STATE_DEPTH_BIAS = 3 + VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 + VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 + VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 + VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 + VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + VK_POLYGON_MODE_FILL = 0 + VK_POLYGON_MODE_LINE = 1 + VK_POLYGON_MODE_POINT = 2 + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 + VK_POLYGON_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 + VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 + VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 + VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 + VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 + VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 + VK_ACCESS_INDEX_READ_BIT = 2 + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 + VK_ACCESS_UNIFORM_READ_BIT = 8 + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 + VK_ACCESS_SHADER_READ_BIT = 32 + VK_ACCESS_SHADER_WRITE_BIT = 64 + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 + VK_ACCESS_TRANSFER_READ_BIT = 2048 + VK_ACCESS_TRANSFER_WRITE_BIT = 4096 + VK_ACCESS_HOST_READ_BIT = 8192 + VK_ACCESS_HOST_WRITE_BIT = 16384 + VK_ACCESS_MEMORY_READ_BIT = 32768 + VK_ACCESS_MEMORY_WRITE_BIT = 65536 + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + VK_IMAGE_ASPECT_COLOR_BIT = 1 + VK_IMAGE_ASPECT_DEPTH_BIT = 2 + VK_IMAGE_ASPECT_STENCIL_BIT = 4 + VK_IMAGE_ASPECT_METADATA_BIT = 8 + VK_IMAGE_ASPECT_PLANE_0_BIT = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT = 64 + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 + VK_IMAGE_CREATE_ALIAS_BIT = 1024 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 + VK_IMAGE_CREATE_PROTECTED_BIT = 2048 + VK_IMAGE_CREATE_DISJOINT_BIT = 512 + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 + VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + VK_SAMPLE_COUNT_1_BIT = 1 + VK_SAMPLE_COUNT_2_BIT = 2 + VK_SAMPLE_COUNT_4_BIT = 4 + VK_SAMPLE_COUNT_8_BIT = 8 + VK_SAMPLE_COUNT_16_BIT = 16 + VK_SAMPLE_COUNT_32_BIT = 32 + VK_SAMPLE_COUNT_64_BIT = 64 + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 + VK_IMAGE_USAGE_SAMPLED_BIT = 4 + VK_IMAGE_USAGE_STORAGE_BIT = 8 + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 + VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + VK_QUEUE_GRAPHICS_BIT = 1 + VK_QUEUE_COMPUTE_BIT = 2 + VK_QUEUE_TRANSFER_BIT = 4 + VK_QUEUE_SPARSE_BINDING_BIT = 8 + VK_QUEUE_PROTECTED_BIT = 16 + VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 + VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 + VK_PIPELINE_STAGE_HOST_BIT = 16384 + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + VK_QUERY_RESULT_64_BIT = 1 + VK_QUERY_RESULT_WAIT_BIT = 2 + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 + VK_QUERY_RESULT_PARTIAL_BIT = 8 + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + VK_COLOR_COMPONENT_R_BIT = 1 + VK_COLOR_COMPONENT_G_BIT = 2 + VK_COLOR_COMPONENT_B_BIT = 4 + VK_COLOR_COMPONENT_A_BIT = 8 + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + VK_PIPELINE_CREATE_DISPATCH_BASE = 16 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + VK_SHADER_STAGE_VERTEX_BIT = 1 + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 + VK_SHADER_STAGE_GEOMETRY_BIT = 8 + VK_SHADER_STAGE_FRAGMENT_BIT = 16 + VK_SHADER_STAGE_COMPUTE_BIT = 32 + VK_SHADER_STAGE_ALL_GRAPHICS = 31 + VK_SHADER_STAGE_ALL = 2147483647 + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + VK_CULL_MODE_NONE = 0 + VK_CULL_MODE_FRONT_BIT = 1 + VK_CULL_MODE_BACK_BIT = 2 + VK_CULL_MODE_FRONT_AND_BACK = 3 + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + VK_DEPENDENCY_BY_REGION_BIT = 1 + VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 + VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 + VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + VK_CHROMA_LOCATION_COSITED_EVEN = 0 + VK_CHROMA_LOCATION_MIDPOINT = 1 + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 + VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 + VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + VK_SUBGROUP_FEATURE_BASIC_BIT = 1 + VK_SUBGROUP_FEATURE_VOTE_BIT = 2 + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 + VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 + VK_SUBGROUP_FEATURE_QUAD_BIT = 128 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + VK_PRESENT_MODE_IMMEDIATE_KHR = 0 + VK_PRESENT_MODE_MAILBOX_KHR = 1 + VK_PRESENT_MODE_FIFO_KHR = 2 + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 + VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 + VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 + VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 + VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 + VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 + VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 + VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 + VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 + VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 + VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 + VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 + VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 + VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 + VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 + VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 + VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 + VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 + VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 + VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 + VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 + VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 + VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 + VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 + VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 + VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 + VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 + VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 + VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 + VK_SHADER_INFO_TYPE_BINARY_AMD = 1 + VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 + VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + VK_DISPLAY_POWER_STATE_OFF_EXT = 0 + VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 + VK_DISPLAY_POWER_STATE_ON_EXT = 2 + VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 + VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 + VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 + VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 + VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 + VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 + VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 + VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 + VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 + VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 + VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWin32SurfaceCreateFlagsKHR = VkFlags + +struct VkWin32SurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWin32SurfaceCreateFlagsKHR + hinstance::HINSTANCE + hwnd::HWND +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWin32SurfaceKHR ) ( VkInstance instance , const VkWin32SurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWin32SurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex ) +const PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWin32SurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex) + ccall((:vkGetPhysicalDeviceWin32PresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) +end + +struct VkImportMemoryWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR +end + +struct VkExportMemoryWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR +end + +struct VkMemoryWin32HandlePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleKHR ) ( VkDevice device , const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) +const PFN_vkGetMemoryWin32HandleKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandlePropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , HANDLE handle , VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties ) +const PFN_vkGetMemoryWin32HandlePropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetMemoryWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) +end + +function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties) + ccall((:vkGetMemoryWin32HandlePropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, HANDLE, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) +end + +struct VkWin32KeyedMutexAcquireReleaseInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + acquireCount::UInt32 + pAcquireSyncs::Ptr{VkDeviceMemory} + pAcquireKeys::Ptr{UInt64} + pAcquireTimeouts::Ptr{UInt32} + releaseCount::UInt32 + pReleaseSyncs::Ptr{VkDeviceMemory} + pReleaseKeys::Ptr{UInt64} +end + +struct VkImportSemaphoreWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR +end + +struct VkExportSemaphoreWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR +end + +struct VkD3D12FenceSubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValuesCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValuesCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreGetWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreWin32HandleKHR ) ( VkDevice device , const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo ) +const PFN_vkImportSemaphoreWin32HandleKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreWin32HandleKHR ) ( VkDevice device , const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) +const PFN_vkGetSemaphoreWin32HandleKHR = Ptr{Cvoid} + +function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo) + ccall((:vkImportSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) +end + +function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) +end + +struct VkImportFenceWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR +end + +struct VkExportFenceWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR +end + +struct VkFenceGetWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceWin32HandleKHR ) ( VkDevice device , const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo ) +const PFN_vkImportFenceWin32HandleKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceWin32HandleKHR ) ( VkDevice device , const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) +const PFN_vkGetFenceWin32HandleKHR = Ptr{Cvoid} + +function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo) + ccall((:vkImportFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) +end + +function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) +end + +struct VkImportMemoryWin32HandleInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagsNV + handle::HANDLE +end + +struct VkExportMemoryWin32HandleInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleNV ) ( VkDevice device , VkDeviceMemory memory , VkExternalMemoryHandleTypeFlagsNV handleType , HANDLE * pHandle ) +const PFN_vkGetMemoryWin32HandleNV = Ptr{Cvoid} + +function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle) + ccall((:vkGetMemoryWin32HandleNV, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{HANDLE}), device, memory, handleType, pHandle) +end + +struct VkWin32KeyedMutexAcquireReleaseInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + acquireCount::UInt32 + pAcquireSyncs::Ptr{VkDeviceMemory} + pAcquireKeys::Ptr{UInt64} + pAcquireTimeoutMilliseconds::Ptr{UInt32} + releaseCount::UInt32 + pReleaseSyncs::Ptr{VkDeviceMemory} + pReleaseKeys::Ptr{UInt64} +end + +@cenum VkFullScreenExclusiveEXT::UInt32 begin + VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0 + VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1 + VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2 + VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3 + VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 2147483647 +end + +struct VkSurfaceFullScreenExclusiveInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fullScreenExclusive::VkFullScreenExclusiveEXT +end + +struct VkSurfaceCapabilitiesFullScreenExclusiveEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fullScreenExclusiveSupported::VkBool32 +end + +struct VkSurfaceFullScreenExclusiveWin32InfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + hmonitor::HMONITOR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireFullScreenExclusiveModeEXT ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkAcquireFullScreenExclusiveModeEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseFullScreenExclusiveModeEXT ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkReleaseFullScreenExclusiveModeEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModes2EXT ) ( VkDevice device , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModes2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModes2EXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) +end + +function vkAcquireFullScreenExclusiveModeEXT(device, swapchain) + ccall((:vkAcquireFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +function vkReleaseFullScreenExclusiveModeEXT(device, swapchain) + ccall((:vkReleaseFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModes2EXT, libvulkan), VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) +end + +const VULKAN_H_ = 1 + +const VKAPI_CALL = __stdcall + +const VKAPI_PTR = VKAPI_CALL + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WIN32_H_ = 1 + +const VK_KHR_win32_surface = 1 + +const VK_KHR_WIN32_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface" + +const VK_KHR_external_memory_win32 = 1 + +const VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_KHR_external_memory_win32" + +const VK_KHR_win32_keyed_mutex = 1 + +const VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION = 1 + +const VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_KHR_win32_keyed_mutex" + +const VK_KHR_external_semaphore_win32 = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME = "VK_KHR_external_semaphore_win32" + +const VK_KHR_external_fence_win32 = 1 + +const VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME = "VK_KHR_external_fence_win32" + +const VK_NV_external_memory_win32 = 1 + +const VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_NV_external_memory_win32" + +const VK_NV_win32_keyed_mutex = 1 + +const VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION = 2 + +const VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_NV_win32_keyed_mutex" + +const VK_EXT_full_screen_exclusive = 1 + +const VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION = 4 + +const VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME = "VK_EXT_full_screen_exclusive" + diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index fed5453..fe38586 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -1,6 +1,7 @@ module LibVulkan -using CEnum +include("CEnum.jl") +using .CEnum import Libdl @@ -29,13138 +30,51 @@ function __init__() libvulkan_handle[] = Libdl.dlopen(libname) end -#### External definitions -VK_QUEUE_FAMILY_EXTERNAL = nothing -VK_SHADER_UNUSED_KHR = nothing - -# X11/X.h -const Window = Culong -const VisualID = Culong -# X11/Xlib.h -const Display = Cvoid # opaque struct -# X11/Xrandr.h -const RROutput = UInt32 -# xcb.h -const xcb_connection_t = Cvoid # opaque struct -const xcb_window_t = UInt32 -const xcb_visualid_t = UInt32 -# Wayland -const wl_display = Cvoid # opaque struct -const wl_surface = Cvoid # opaque struct -# Mir -const MirConnection = Cvoid # opaque struct -const MirSurface = Cvoid # opaque struct -# Windows -const HINSTANCE = Ptr{Cvoid} -const HWND = Ptr{Cvoid} -const HMONITOR = Ptr{Cvoid} -const HANDLE = HMONITOR -const DWORD = UInt32 -const LPCWSTR = UInt16 -const SECURITY_ATTRIBUTES = Cvoid # opaque struct -# DirectFB -const IDirectFB = Cvoid # opaque struct -const IDirectFBSurface = Cvoid # opaque struct -# Zircon -const zx_handle_t = UInt32 -# GGP C -const GgpStreamDescriptor = UInt32 -const GgpFrameToken = UInt32 - -# TODO: Clang.jl should support this kinda macros VK_MAKE_VERSION(major, minor, patch) = (Cuint(major) << 22) | (Cuint(minor) << 12) | patch +VK_MAKE_API_VERSION(variant, major, minor, patch) = (Cuint(variant) << 29) | (Cuint(major) << 22) | (Cuint(minor) << 12) | Cuint(patch) VK_VERSION_MAJOR(version) = Cuint(version) >> 22 VK_VERSION_MINOR(version) = (Cuint(version) >> 12) & 0x3ff VK_VERSION_PATCH(version) = Cuint(version) & 0xfff -const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) -const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) -const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) - - -const VkBool32 = UInt32 - -const VkDeviceAddress = UInt64 - -const VkDeviceSize = UInt64 - -const VkFlags = UInt32 - -const VkSampleMask = UInt32 - -const VkBuffer_T = Cvoid - -const VkBuffer = Ptr{VkBuffer_T} - -const VkImage_T = Cvoid - -const VkImage = Ptr{VkImage_T} - -const VkInstance_T = Cvoid - -const VkInstance = Ptr{VkInstance_T} - -const VkPhysicalDevice_T = Cvoid - -const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} - -const VkDevice_T = Cvoid - -const VkDevice = Ptr{VkDevice_T} - -const VkQueue_T = Cvoid - -const VkQueue = Ptr{VkQueue_T} - -const VkSemaphore_T = Cvoid - -const VkSemaphore = Ptr{VkSemaphore_T} - -const VkCommandBuffer_T = Cvoid - -const VkCommandBuffer = Ptr{VkCommandBuffer_T} - -const VkFence_T = Cvoid - -const VkFence = Ptr{VkFence_T} - -const VkDeviceMemory_T = Cvoid - -const VkDeviceMemory = Ptr{VkDeviceMemory_T} - -const VkEvent_T = Cvoid - -const VkEvent = Ptr{VkEvent_T} - -const VkQueryPool_T = Cvoid - -const VkQueryPool = Ptr{VkQueryPool_T} - -const VkBufferView_T = Cvoid - -const VkBufferView = Ptr{VkBufferView_T} - -const VkImageView_T = Cvoid - -const VkImageView = Ptr{VkImageView_T} - -const VkShaderModule_T = Cvoid - -const VkShaderModule = Ptr{VkShaderModule_T} - -const VkPipelineCache_T = Cvoid - -const VkPipelineCache = Ptr{VkPipelineCache_T} - -const VkPipelineLayout_T = Cvoid - -const VkPipelineLayout = Ptr{VkPipelineLayout_T} - -const VkPipeline_T = Cvoid - -const VkPipeline = Ptr{VkPipeline_T} - -const VkRenderPass_T = Cvoid - -const VkRenderPass = Ptr{VkRenderPass_T} - -const VkDescriptorSetLayout_T = Cvoid - -const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} - -const VkSampler_T = Cvoid - -const VkSampler = Ptr{VkSampler_T} - -const VkDescriptorSet_T = Cvoid - -const VkDescriptorSet = Ptr{VkDescriptorSet_T} - -const VkDescriptorPool_T = Cvoid - -const VkDescriptorPool = Ptr{VkDescriptorPool_T} - -const VkFramebuffer_T = Cvoid - -const VkFramebuffer = Ptr{VkFramebuffer_T} - -const VkCommandPool_T = Cvoid - -const VkCommandPool = Ptr{VkCommandPool_T} - -@cenum VkResult::Int32 begin - VK_SUCCESS = 0 - VK_NOT_READY = 1 - VK_TIMEOUT = 2 - VK_EVENT_SET = 3 - VK_EVENT_RESET = 4 - VK_INCOMPLETE = 5 - VK_ERROR_OUT_OF_HOST_MEMORY = -1 - VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 - VK_ERROR_INITIALIZATION_FAILED = -3 - VK_ERROR_DEVICE_LOST = -4 - VK_ERROR_MEMORY_MAP_FAILED = -5 - VK_ERROR_LAYER_NOT_PRESENT = -6 - VK_ERROR_EXTENSION_NOT_PRESENT = -7 - VK_ERROR_FEATURE_NOT_PRESENT = -8 - VK_ERROR_INCOMPATIBLE_DRIVER = -9 - VK_ERROR_TOO_MANY_OBJECTS = -10 - VK_ERROR_FORMAT_NOT_SUPPORTED = -11 - VK_ERROR_FRAGMENTED_POOL = -12 - VK_ERROR_UNKNOWN = -13 - VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 - VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 - VK_ERROR_FRAGMENTATION = -1000161000 - VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 - VK_ERROR_SURFACE_LOST_KHR = -1000000000 - VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001 - VK_SUBOPTIMAL_KHR = 1000001003 - VK_ERROR_OUT_OF_DATE_KHR = -1000001004 - VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001 - VK_ERROR_VALIDATION_FAILED_EXT = -1000011001 - VK_ERROR_INVALID_SHADER_NV = -1000012000 - VK_ERROR_INCOMPATIBLE_VERSION_KHR = -1000150000 - VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 - VK_ERROR_NOT_PERMITTED_EXT = -1000174001 - VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 - VK_THREAD_IDLE_KHR = 1000268000 - VK_THREAD_DONE_KHR = 1000268001 - VK_OPERATION_DEFERRED_KHR = 1000268002 - VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 - VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 - VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 - VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 - VK_ERROR_FRAGMENTATION_EXT = -1000161000 - VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 - VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 - VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 - VK_RESULT_MAX_ENUM = 2147483647 -end - -@cenum VkStructureType::UInt32 begin - VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 - VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 - VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 - VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 - VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 - VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 - VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 - VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 - VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 - VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 - VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 - VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 - VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 - VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 - VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 - VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 - VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 - VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 - VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 - VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 - VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 - VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 - VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 - VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 - VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 - VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 - VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 - VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 - VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 - VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 - VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 - VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 - VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 - VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 - VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 - VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 - VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 - VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 - VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 - VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 - VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 - VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 - VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 - VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 - VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 - VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 - VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 - VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 - VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 - VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 - VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 - VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 - VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 - VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 - VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 - VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 - VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 - VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 - VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 - VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 - VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 - VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 - VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 - VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 - VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 - VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 - VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 - VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 - VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 - VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 - VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 - VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 - VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 - VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 - VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000 - VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001 - VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007 - VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008 - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009 - VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010 - VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011 - VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012 - VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000 - VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001 - VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000 - VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000 - VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000 - VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000 - VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000 - VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000 - VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000 - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000 - VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000 - VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001 - VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002 - VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000 - VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001 - VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 - VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 - VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 - VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 - VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000 - VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001 - VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000 - VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001 - VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000 - VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000 - VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 - VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 - VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000 - VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001 - VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002 - VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003 - VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000 - VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001 - VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002 - VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000 - VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000 - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001 - VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002 - VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003 - VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000 - VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000 - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 - VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 - VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000 - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000 - VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000 - VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001 - VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002 - VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003 - VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000 - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000 - VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000 - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 - VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000 - VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000 - VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000 - VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001 - VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002 - VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000 - VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 - VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 - VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 - VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 - VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 - VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000 - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001 - VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002 - VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000 - VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 - VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 - VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 - VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 - VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000 - VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000 - VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000 - VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001 - VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002 - VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003 - VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004 - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000 - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001 - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002 - VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003 - VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004 - VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 - VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 - VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000 - VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001 - VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003 - VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001 - VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002 - VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000 - VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 - VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 - VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 - VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 - VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 - VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 - VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 - VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 - VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 - VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 - VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 - VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 - VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 - VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 - VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 - VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 - VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 - VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 - VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000 - VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000 - VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000 - VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 - VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000 - VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 - VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 - VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 - VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 - VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 - VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 - VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 - VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 - VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 - VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 - VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 - VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 - VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 - VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 - VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 - VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 - VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 - VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 - VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 - VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 - VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 - VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 - VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 - VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 - VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 - VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 - VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 - VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 - VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 - VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 - VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 - VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 - VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 - VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 - VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 - VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 - VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 - VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 - VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 - VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001 - VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002 - VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004 - VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006 - VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008 - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000 - VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003 - VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004 - VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005 - VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006 - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013 - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000 - VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000 - VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002 - VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004 - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000 - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001 - VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000 - VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001 - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 - VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 - VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 - VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 - VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 - VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000 - VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001 - VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000 - VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001 - VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002 - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = 1000120000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000 - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000 - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 - VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 - VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000 - VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001 - VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002 - VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003 - VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004 - VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000 - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001 - VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002 - VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004 - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005 - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000 - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001 - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002 - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003 - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004 - VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 - VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 - VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 - VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 - VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 - VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 - VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 - VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 - VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 - VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 -end - -@cenum VkImageLayout::UInt32 begin - VK_IMAGE_LAYOUT_UNDEFINED = 0 - VK_IMAGE_LAYOUT_GENERAL = 1 - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 - VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 - VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 - VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 - VK_IMAGE_LAYOUT_PREINITIALIZED = 8 - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 - VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 - VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 - VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 - VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 - VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 - VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000 - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001 - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 - VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 - VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 - VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 -end - -@cenum VkObjectType::UInt32 begin - VK_OBJECT_TYPE_UNKNOWN = 0 - VK_OBJECT_TYPE_INSTANCE = 1 - VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2 - VK_OBJECT_TYPE_DEVICE = 3 - VK_OBJECT_TYPE_QUEUE = 4 - VK_OBJECT_TYPE_SEMAPHORE = 5 - VK_OBJECT_TYPE_COMMAND_BUFFER = 6 - VK_OBJECT_TYPE_FENCE = 7 - VK_OBJECT_TYPE_DEVICE_MEMORY = 8 - VK_OBJECT_TYPE_BUFFER = 9 - VK_OBJECT_TYPE_IMAGE = 10 - VK_OBJECT_TYPE_EVENT = 11 - VK_OBJECT_TYPE_QUERY_POOL = 12 - VK_OBJECT_TYPE_BUFFER_VIEW = 13 - VK_OBJECT_TYPE_IMAGE_VIEW = 14 - VK_OBJECT_TYPE_SHADER_MODULE = 15 - VK_OBJECT_TYPE_PIPELINE_CACHE = 16 - VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17 - VK_OBJECT_TYPE_RENDER_PASS = 18 - VK_OBJECT_TYPE_PIPELINE = 19 - VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20 - VK_OBJECT_TYPE_SAMPLER = 21 - VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22 - VK_OBJECT_TYPE_DESCRIPTOR_SET = 23 - VK_OBJECT_TYPE_FRAMEBUFFER = 24 - VK_OBJECT_TYPE_COMMAND_POOL = 25 - VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000 - VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000 - VK_OBJECT_TYPE_SURFACE_KHR = 1000000000 - VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000 - VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000 - VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001 - VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000 - VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000 - VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 - VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 - VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 - VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 - VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 - VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 - VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 - VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 - VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 - VK_OBJECT_TYPE_MAX_ENUM = 2147483647 -end - -@cenum VkVendorId::UInt32 begin - VK_VENDOR_ID_VIV = 65537 - VK_VENDOR_ID_VSI = 65538 - VK_VENDOR_ID_KAZAN = 65539 - VK_VENDOR_ID_CODEPLAY = 65540 - VK_VENDOR_ID_MESA = 65541 - VK_VENDOR_ID_MAX_ENUM = 2147483647 -end - -@cenum VkPipelineCacheHeaderVersion::UInt32 begin - VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 - VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 -end - -@cenum VkSystemAllocationScope::UInt32 begin - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 - VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 - VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 - VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 - VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 - VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 -end - -@cenum VkInternalAllocationType::UInt32 begin - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 - VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 -end - -@cenum VkFormat::UInt32 begin - VK_FORMAT_UNDEFINED = 0 - VK_FORMAT_R4G4_UNORM_PACK8 = 1 - VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2 - VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3 - VK_FORMAT_R5G6B5_UNORM_PACK16 = 4 - VK_FORMAT_B5G6R5_UNORM_PACK16 = 5 - VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6 - VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7 - VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8 - VK_FORMAT_R8_UNORM = 9 - VK_FORMAT_R8_SNORM = 10 - VK_FORMAT_R8_USCALED = 11 - VK_FORMAT_R8_SSCALED = 12 - VK_FORMAT_R8_UINT = 13 - VK_FORMAT_R8_SINT = 14 - VK_FORMAT_R8_SRGB = 15 - VK_FORMAT_R8G8_UNORM = 16 - VK_FORMAT_R8G8_SNORM = 17 - VK_FORMAT_R8G8_USCALED = 18 - VK_FORMAT_R8G8_SSCALED = 19 - VK_FORMAT_R8G8_UINT = 20 - VK_FORMAT_R8G8_SINT = 21 - VK_FORMAT_R8G8_SRGB = 22 - VK_FORMAT_R8G8B8_UNORM = 23 - VK_FORMAT_R8G8B8_SNORM = 24 - VK_FORMAT_R8G8B8_USCALED = 25 - VK_FORMAT_R8G8B8_SSCALED = 26 - VK_FORMAT_R8G8B8_UINT = 27 - VK_FORMAT_R8G8B8_SINT = 28 - VK_FORMAT_R8G8B8_SRGB = 29 - VK_FORMAT_B8G8R8_UNORM = 30 - VK_FORMAT_B8G8R8_SNORM = 31 - VK_FORMAT_B8G8R8_USCALED = 32 - VK_FORMAT_B8G8R8_SSCALED = 33 - VK_FORMAT_B8G8R8_UINT = 34 - VK_FORMAT_B8G8R8_SINT = 35 - VK_FORMAT_B8G8R8_SRGB = 36 - VK_FORMAT_R8G8B8A8_UNORM = 37 - VK_FORMAT_R8G8B8A8_SNORM = 38 - VK_FORMAT_R8G8B8A8_USCALED = 39 - VK_FORMAT_R8G8B8A8_SSCALED = 40 - VK_FORMAT_R8G8B8A8_UINT = 41 - VK_FORMAT_R8G8B8A8_SINT = 42 - VK_FORMAT_R8G8B8A8_SRGB = 43 - VK_FORMAT_B8G8R8A8_UNORM = 44 - VK_FORMAT_B8G8R8A8_SNORM = 45 - VK_FORMAT_B8G8R8A8_USCALED = 46 - VK_FORMAT_B8G8R8A8_SSCALED = 47 - VK_FORMAT_B8G8R8A8_UINT = 48 - VK_FORMAT_B8G8R8A8_SINT = 49 - VK_FORMAT_B8G8R8A8_SRGB = 50 - VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51 - VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52 - VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53 - VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54 - VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55 - VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56 - VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57 - VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58 - VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59 - VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60 - VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61 - VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62 - VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63 - VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64 - VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65 - VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66 - VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67 - VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68 - VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69 - VK_FORMAT_R16_UNORM = 70 - VK_FORMAT_R16_SNORM = 71 - VK_FORMAT_R16_USCALED = 72 - VK_FORMAT_R16_SSCALED = 73 - VK_FORMAT_R16_UINT = 74 - VK_FORMAT_R16_SINT = 75 - VK_FORMAT_R16_SFLOAT = 76 - VK_FORMAT_R16G16_UNORM = 77 - VK_FORMAT_R16G16_SNORM = 78 - VK_FORMAT_R16G16_USCALED = 79 - VK_FORMAT_R16G16_SSCALED = 80 - VK_FORMAT_R16G16_UINT = 81 - VK_FORMAT_R16G16_SINT = 82 - VK_FORMAT_R16G16_SFLOAT = 83 - VK_FORMAT_R16G16B16_UNORM = 84 - VK_FORMAT_R16G16B16_SNORM = 85 - VK_FORMAT_R16G16B16_USCALED = 86 - VK_FORMAT_R16G16B16_SSCALED = 87 - VK_FORMAT_R16G16B16_UINT = 88 - VK_FORMAT_R16G16B16_SINT = 89 - VK_FORMAT_R16G16B16_SFLOAT = 90 - VK_FORMAT_R16G16B16A16_UNORM = 91 - VK_FORMAT_R16G16B16A16_SNORM = 92 - VK_FORMAT_R16G16B16A16_USCALED = 93 - VK_FORMAT_R16G16B16A16_SSCALED = 94 - VK_FORMAT_R16G16B16A16_UINT = 95 - VK_FORMAT_R16G16B16A16_SINT = 96 - VK_FORMAT_R16G16B16A16_SFLOAT = 97 - VK_FORMAT_R32_UINT = 98 - VK_FORMAT_R32_SINT = 99 - VK_FORMAT_R32_SFLOAT = 100 - VK_FORMAT_R32G32_UINT = 101 - VK_FORMAT_R32G32_SINT = 102 - VK_FORMAT_R32G32_SFLOAT = 103 - VK_FORMAT_R32G32B32_UINT = 104 - VK_FORMAT_R32G32B32_SINT = 105 - VK_FORMAT_R32G32B32_SFLOAT = 106 - VK_FORMAT_R32G32B32A32_UINT = 107 - VK_FORMAT_R32G32B32A32_SINT = 108 - VK_FORMAT_R32G32B32A32_SFLOAT = 109 - VK_FORMAT_R64_UINT = 110 - VK_FORMAT_R64_SINT = 111 - VK_FORMAT_R64_SFLOAT = 112 - VK_FORMAT_R64G64_UINT = 113 - VK_FORMAT_R64G64_SINT = 114 - VK_FORMAT_R64G64_SFLOAT = 115 - VK_FORMAT_R64G64B64_UINT = 116 - VK_FORMAT_R64G64B64_SINT = 117 - VK_FORMAT_R64G64B64_SFLOAT = 118 - VK_FORMAT_R64G64B64A64_UINT = 119 - VK_FORMAT_R64G64B64A64_SINT = 120 - VK_FORMAT_R64G64B64A64_SFLOAT = 121 - VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122 - VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123 - VK_FORMAT_D16_UNORM = 124 - VK_FORMAT_X8_D24_UNORM_PACK32 = 125 - VK_FORMAT_D32_SFLOAT = 126 - VK_FORMAT_S8_UINT = 127 - VK_FORMAT_D16_UNORM_S8_UINT = 128 - VK_FORMAT_D24_UNORM_S8_UINT = 129 - VK_FORMAT_D32_SFLOAT_S8_UINT = 130 - VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131 - VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132 - VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133 - VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134 - VK_FORMAT_BC2_UNORM_BLOCK = 135 - VK_FORMAT_BC2_SRGB_BLOCK = 136 - VK_FORMAT_BC3_UNORM_BLOCK = 137 - VK_FORMAT_BC3_SRGB_BLOCK = 138 - VK_FORMAT_BC4_UNORM_BLOCK = 139 - VK_FORMAT_BC4_SNORM_BLOCK = 140 - VK_FORMAT_BC5_UNORM_BLOCK = 141 - VK_FORMAT_BC5_SNORM_BLOCK = 142 - VK_FORMAT_BC6H_UFLOAT_BLOCK = 143 - VK_FORMAT_BC6H_SFLOAT_BLOCK = 144 - VK_FORMAT_BC7_UNORM_BLOCK = 145 - VK_FORMAT_BC7_SRGB_BLOCK = 146 - VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147 - VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148 - VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149 - VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150 - VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151 - VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152 - VK_FORMAT_EAC_R11_UNORM_BLOCK = 153 - VK_FORMAT_EAC_R11_SNORM_BLOCK = 154 - VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155 - VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156 - VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157 - VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158 - VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159 - VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160 - VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161 - VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162 - VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163 - VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164 - VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165 - VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166 - VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167 - VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168 - VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169 - VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170 - VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171 - VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172 - VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173 - VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174 - VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175 - VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176 - VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177 - VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178 - VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179 - VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180 - VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181 - VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182 - VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183 - VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184 - VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000 - VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001 - VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002 - VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003 - VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004 - VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005 - VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006 - VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007 - VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008 - VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009 - VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010 - VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011 - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012 - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013 - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014 - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015 - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016 - VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017 - VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018 - VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019 - VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020 - VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021 - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022 - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023 - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024 - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025 - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026 - VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027 - VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028 - VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029 - VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030 - VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031 - VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032 - VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033 - VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000 - VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001 - VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002 - VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003 - VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004 - VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005 - VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006 - VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007 - VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 - VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 - VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 - VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 - VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 - VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 - VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 - VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 - VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 - VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 - VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 - VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 - VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 - VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 - VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 - VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 - VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000 - VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001 - VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002 - VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003 - VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004 - VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005 - VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006 - VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007 - VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008 - VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009 - VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010 - VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011 - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012 - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013 - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014 - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015 - VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016 - VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017 - VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018 - VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019 - VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020 - VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021 - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022 - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023 - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024 - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025 - VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026 - VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027 - VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028 - VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029 - VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030 - VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031 - VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032 - VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033 - VK_FORMAT_MAX_ENUM = 2147483647 -end - -@cenum VkImageTiling::UInt32 begin - VK_IMAGE_TILING_OPTIMAL = 0 - VK_IMAGE_TILING_LINEAR = 1 - VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 - VK_IMAGE_TILING_MAX_ENUM = 2147483647 -end - -@cenum VkImageType::UInt32 begin - VK_IMAGE_TYPE_1D = 0 - VK_IMAGE_TYPE_2D = 1 - VK_IMAGE_TYPE_3D = 2 - VK_IMAGE_TYPE_MAX_ENUM = 2147483647 -end - -@cenum VkPhysicalDeviceType::UInt32 begin - VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 - VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 - VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 - VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 - VK_PHYSICAL_DEVICE_TYPE_CPU = 4 - VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 -end - -@cenum VkQueryType::UInt32 begin - VK_QUERY_TYPE_OCCLUSION = 0 - VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 - VK_QUERY_TYPE_TIMESTAMP = 2 - VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 - VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 - VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 - VK_QUERY_TYPE_MAX_ENUM = 2147483647 -end - -@cenum VkSharingMode::UInt32 begin - VK_SHARING_MODE_EXCLUSIVE = 0 - VK_SHARING_MODE_CONCURRENT = 1 - VK_SHARING_MODE_MAX_ENUM = 2147483647 -end - -@cenum VkComponentSwizzle::UInt32 begin - VK_COMPONENT_SWIZZLE_IDENTITY = 0 - VK_COMPONENT_SWIZZLE_ZERO = 1 - VK_COMPONENT_SWIZZLE_ONE = 2 - VK_COMPONENT_SWIZZLE_R = 3 - VK_COMPONENT_SWIZZLE_G = 4 - VK_COMPONENT_SWIZZLE_B = 5 - VK_COMPONENT_SWIZZLE_A = 6 - VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 -end - -@cenum VkImageViewType::UInt32 begin - VK_IMAGE_VIEW_TYPE_1D = 0 - VK_IMAGE_VIEW_TYPE_2D = 1 - VK_IMAGE_VIEW_TYPE_3D = 2 - VK_IMAGE_VIEW_TYPE_CUBE = 3 - VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 - VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 - VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 - VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 -end - -@cenum VkBlendFactor::UInt32 begin - VK_BLEND_FACTOR_ZERO = 0 - VK_BLEND_FACTOR_ONE = 1 - VK_BLEND_FACTOR_SRC_COLOR = 2 - VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 - VK_BLEND_FACTOR_DST_COLOR = 4 - VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 - VK_BLEND_FACTOR_SRC_ALPHA = 6 - VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 - VK_BLEND_FACTOR_DST_ALPHA = 8 - VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 - VK_BLEND_FACTOR_CONSTANT_COLOR = 10 - VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 - VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 - VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 - VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 - VK_BLEND_FACTOR_SRC1_COLOR = 15 - VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 - VK_BLEND_FACTOR_SRC1_ALPHA = 17 - VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 - VK_BLEND_FACTOR_MAX_ENUM = 2147483647 -end - -@cenum VkBlendOp::UInt32 begin - VK_BLEND_OP_ADD = 0 - VK_BLEND_OP_SUBTRACT = 1 - VK_BLEND_OP_REVERSE_SUBTRACT = 2 - VK_BLEND_OP_MIN = 3 - VK_BLEND_OP_MAX = 4 - VK_BLEND_OP_ZERO_EXT = 1000148000 - VK_BLEND_OP_SRC_EXT = 1000148001 - VK_BLEND_OP_DST_EXT = 1000148002 - VK_BLEND_OP_SRC_OVER_EXT = 1000148003 - VK_BLEND_OP_DST_OVER_EXT = 1000148004 - VK_BLEND_OP_SRC_IN_EXT = 1000148005 - VK_BLEND_OP_DST_IN_EXT = 1000148006 - VK_BLEND_OP_SRC_OUT_EXT = 1000148007 - VK_BLEND_OP_DST_OUT_EXT = 1000148008 - VK_BLEND_OP_SRC_ATOP_EXT = 1000148009 - VK_BLEND_OP_DST_ATOP_EXT = 1000148010 - VK_BLEND_OP_XOR_EXT = 1000148011 - VK_BLEND_OP_MULTIPLY_EXT = 1000148012 - VK_BLEND_OP_SCREEN_EXT = 1000148013 - VK_BLEND_OP_OVERLAY_EXT = 1000148014 - VK_BLEND_OP_DARKEN_EXT = 1000148015 - VK_BLEND_OP_LIGHTEN_EXT = 1000148016 - VK_BLEND_OP_COLORDODGE_EXT = 1000148017 - VK_BLEND_OP_COLORBURN_EXT = 1000148018 - VK_BLEND_OP_HARDLIGHT_EXT = 1000148019 - VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020 - VK_BLEND_OP_DIFFERENCE_EXT = 1000148021 - VK_BLEND_OP_EXCLUSION_EXT = 1000148022 - VK_BLEND_OP_INVERT_EXT = 1000148023 - VK_BLEND_OP_INVERT_RGB_EXT = 1000148024 - VK_BLEND_OP_LINEARDODGE_EXT = 1000148025 - VK_BLEND_OP_LINEARBURN_EXT = 1000148026 - VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027 - VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028 - VK_BLEND_OP_PINLIGHT_EXT = 1000148029 - VK_BLEND_OP_HARDMIX_EXT = 1000148030 - VK_BLEND_OP_HSL_HUE_EXT = 1000148031 - VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032 - VK_BLEND_OP_HSL_COLOR_EXT = 1000148033 - VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034 - VK_BLEND_OP_PLUS_EXT = 1000148035 - VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036 - VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037 - VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038 - VK_BLEND_OP_MINUS_EXT = 1000148039 - VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040 - VK_BLEND_OP_CONTRAST_EXT = 1000148041 - VK_BLEND_OP_INVERT_OVG_EXT = 1000148042 - VK_BLEND_OP_RED_EXT = 1000148043 - VK_BLEND_OP_GREEN_EXT = 1000148044 - VK_BLEND_OP_BLUE_EXT = 1000148045 - VK_BLEND_OP_MAX_ENUM = 2147483647 -end - -@cenum VkCompareOp::UInt32 begin - VK_COMPARE_OP_NEVER = 0 - VK_COMPARE_OP_LESS = 1 - VK_COMPARE_OP_EQUAL = 2 - VK_COMPARE_OP_LESS_OR_EQUAL = 3 - VK_COMPARE_OP_GREATER = 4 - VK_COMPARE_OP_NOT_EQUAL = 5 - VK_COMPARE_OP_GREATER_OR_EQUAL = 6 - VK_COMPARE_OP_ALWAYS = 7 - VK_COMPARE_OP_MAX_ENUM = 2147483647 -end - -@cenum VkDynamicState::UInt32 begin - VK_DYNAMIC_STATE_VIEWPORT = 0 - VK_DYNAMIC_STATE_SCISSOR = 1 - VK_DYNAMIC_STATE_LINE_WIDTH = 2 - VK_DYNAMIC_STATE_DEPTH_BIAS = 3 - VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4 - VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5 - VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6 - VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7 - VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8 - VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000 - VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000 - VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000 - VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 - VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 - VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 - VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 - VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 - VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 - VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 - VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 - VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 - VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 - VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 - VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 - VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 - VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 - VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 - VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 - VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 -end - -@cenum VkFrontFace::UInt32 begin - VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 - VK_FRONT_FACE_CLOCKWISE = 1 - VK_FRONT_FACE_MAX_ENUM = 2147483647 -end - -@cenum VkVertexInputRate::UInt32 begin - VK_VERTEX_INPUT_RATE_VERTEX = 0 - VK_VERTEX_INPUT_RATE_INSTANCE = 1 - VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 -end - -@cenum VkPrimitiveTopology::UInt32 begin - VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 - VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 - VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 - VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 - VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 -end - -@cenum VkPolygonMode::UInt32 begin - VK_POLYGON_MODE_FILL = 0 - VK_POLYGON_MODE_LINE = 1 - VK_POLYGON_MODE_POINT = 2 - VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000 - VK_POLYGON_MODE_MAX_ENUM = 2147483647 -end - -@cenum VkStencilOp::UInt32 begin - VK_STENCIL_OP_KEEP = 0 - VK_STENCIL_OP_ZERO = 1 - VK_STENCIL_OP_REPLACE = 2 - VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 - VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 - VK_STENCIL_OP_INVERT = 5 - VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 - VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 - VK_STENCIL_OP_MAX_ENUM = 2147483647 -end - -@cenum VkLogicOp::UInt32 begin - VK_LOGIC_OP_CLEAR = 0 - VK_LOGIC_OP_AND = 1 - VK_LOGIC_OP_AND_REVERSE = 2 - VK_LOGIC_OP_COPY = 3 - VK_LOGIC_OP_AND_INVERTED = 4 - VK_LOGIC_OP_NO_OP = 5 - VK_LOGIC_OP_XOR = 6 - VK_LOGIC_OP_OR = 7 - VK_LOGIC_OP_NOR = 8 - VK_LOGIC_OP_EQUIVALENT = 9 - VK_LOGIC_OP_INVERT = 10 - VK_LOGIC_OP_OR_REVERSE = 11 - VK_LOGIC_OP_COPY_INVERTED = 12 - VK_LOGIC_OP_OR_INVERTED = 13 - VK_LOGIC_OP_NAND = 14 - VK_LOGIC_OP_SET = 15 - VK_LOGIC_OP_MAX_ENUM = 2147483647 -end - -@cenum VkBorderColor::UInt32 begin - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0 - VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1 - VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2 - VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3 - VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4 - VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5 - VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003 - VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 - VK_BORDER_COLOR_MAX_ENUM = 2147483647 -end - -@cenum VkFilter::UInt32 begin - VK_FILTER_NEAREST = 0 - VK_FILTER_LINEAR = 1 - VK_FILTER_CUBIC_IMG = 1000015000 - VK_FILTER_CUBIC_EXT = 1000015000 - VK_FILTER_MAX_ENUM = 2147483647 -end - -@cenum VkSamplerAddressMode::UInt32 begin - VK_SAMPLER_ADDRESS_MODE_REPEAT = 0 - VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1 - VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2 - VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3 - VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4 - VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = 4 - VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 -end - -@cenum VkSamplerMipmapMode::UInt32 begin - VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 - VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 - VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 -end - -@cenum VkDescriptorType::UInt32 begin - VK_DESCRIPTOR_TYPE_SAMPLER = 0 - VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 - VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 - VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 - VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 - VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 - VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 - VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 - VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 - VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 - VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 - VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 - VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 - VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 - VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 -end - -@cenum VkAttachmentLoadOp::UInt32 begin - VK_ATTACHMENT_LOAD_OP_LOAD = 0 - VK_ATTACHMENT_LOAD_OP_CLEAR = 1 - VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 - VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 -end - -@cenum VkAttachmentStoreOp::UInt32 begin - VK_ATTACHMENT_STORE_OP_STORE = 0 - VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 - VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 - VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 -end - -@cenum VkPipelineBindPoint::UInt32 begin - VK_PIPELINE_BIND_POINT_GRAPHICS = 0 - VK_PIPELINE_BIND_POINT_COMPUTE = 1 - VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 - VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 - VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 -end - -@cenum VkCommandBufferLevel::UInt32 begin - VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 - VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 - VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 -end - -@cenum VkIndexType::UInt32 begin - VK_INDEX_TYPE_UINT16 = 0 - VK_INDEX_TYPE_UINT32 = 1 - VK_INDEX_TYPE_NONE_KHR = 1000165000 - VK_INDEX_TYPE_UINT8_EXT = 1000265000 - VK_INDEX_TYPE_NONE_NV = 1000165000 - VK_INDEX_TYPE_MAX_ENUM = 2147483647 -end - -@cenum VkSubpassContents::UInt32 begin - VK_SUBPASS_CONTENTS_INLINE = 0 - VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 - VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 -end - -@cenum VkAccessFlagBits::UInt32 begin - VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 1 - VK_ACCESS_INDEX_READ_BIT = 2 - VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 4 - VK_ACCESS_UNIFORM_READ_BIT = 8 - VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 16 - VK_ACCESS_SHADER_READ_BIT = 32 - VK_ACCESS_SHADER_WRITE_BIT = 64 - VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 128 - VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 256 - VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 512 - VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 1024 - VK_ACCESS_TRANSFER_READ_BIT = 2048 - VK_ACCESS_TRANSFER_WRITE_BIT = 4096 - VK_ACCESS_HOST_READ_BIT = 8192 - VK_ACCESS_HOST_WRITE_BIT = 16384 - VK_ACCESS_MEMORY_READ_BIT = 32768 - VK_ACCESS_MEMORY_WRITE_BIT = 65536 - VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 - VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 - VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 - VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 - VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 - VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 - VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 - VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 - VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 - VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 - VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 - VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkAccessFlags = VkFlags - -@cenum VkImageAspectFlagBits::UInt32 begin - VK_IMAGE_ASPECT_COLOR_BIT = 1 - VK_IMAGE_ASPECT_DEPTH_BIT = 2 - VK_IMAGE_ASPECT_STENCIL_BIT = 4 - VK_IMAGE_ASPECT_METADATA_BIT = 8 - VK_IMAGE_ASPECT_PLANE_0_BIT = 16 - VK_IMAGE_ASPECT_PLANE_1_BIT = 32 - VK_IMAGE_ASPECT_PLANE_2_BIT = 64 - VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 128 - VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 - VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 - VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 - VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 16 - VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 32 - VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 64 - VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkImageAspectFlags = VkFlags - -@cenum VkFormatFeatureFlagBits::UInt32 begin - VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 - VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 - VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 - VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 - VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 - VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 - VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 - VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 - VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 - VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 - VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 - VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 - VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 - VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 - VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 - VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 - VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 - VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 - VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 - VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 - VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 - VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 131072 - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 262144 - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 524288 - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 1048576 - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 2097152 - VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 4194304 - VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 8388608 - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 - VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkFormatFeatureFlags = VkFlags - -@cenum VkImageCreateFlagBits::UInt32 begin - VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 1 - VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 2 - VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 4 - VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 8 - VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 16 - VK_IMAGE_CREATE_ALIAS_BIT = 1024 - VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 64 - VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 32 - VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 128 - VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 256 - VK_IMAGE_CREATE_PROTECTED_BIT = 2048 - VK_IMAGE_CREATE_DISJOINT_BIT = 512 - VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 8192 - VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 - VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 - VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 64 - VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 32 - VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 128 - VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 256 - VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 512 - VK_IMAGE_CREATE_ALIAS_BIT_KHR = 1024 - VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkImageCreateFlags = VkFlags - -@cenum VkSampleCountFlagBits::UInt32 begin - VK_SAMPLE_COUNT_1_BIT = 1 - VK_SAMPLE_COUNT_2_BIT = 2 - VK_SAMPLE_COUNT_4_BIT = 4 - VK_SAMPLE_COUNT_8_BIT = 8 - VK_SAMPLE_COUNT_16_BIT = 16 - VK_SAMPLE_COUNT_32_BIT = 32 - VK_SAMPLE_COUNT_64_BIT = 64 - VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkSampleCountFlags = VkFlags - -@cenum VkImageUsageFlagBits::UInt32 begin - VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 1 - VK_IMAGE_USAGE_TRANSFER_DST_BIT = 2 - VK_IMAGE_USAGE_SAMPLED_BIT = 4 - VK_IMAGE_USAGE_STORAGE_BIT = 8 - VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 16 - VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 32 - VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 64 - VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 128 - VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256 - VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 - VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkImageUsageFlags = VkFlags - -const VkInstanceCreateFlags = VkFlags - -@cenum VkMemoryHeapFlagBits::UInt32 begin - VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 1 - VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 2 - VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 2 - VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkMemoryHeapFlags = VkFlags - -@cenum VkMemoryPropertyFlagBits::UInt32 begin - VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 1 - VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 2 - VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 4 - VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 8 - VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 16 - VK_MEMORY_PROPERTY_PROTECTED_BIT = 32 - VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 64 - VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 - VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkMemoryPropertyFlags = VkFlags - -@cenum VkQueueFlagBits::UInt32 begin - VK_QUEUE_GRAPHICS_BIT = 1 - VK_QUEUE_COMPUTE_BIT = 2 - VK_QUEUE_TRANSFER_BIT = 4 - VK_QUEUE_SPARSE_BINDING_BIT = 8 - VK_QUEUE_PROTECTED_BIT = 16 - VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkQueueFlags = VkFlags - -const VkDeviceCreateFlags = VkFlags - -@cenum VkDeviceQueueCreateFlagBits::UInt32 begin - VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 - VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkDeviceQueueCreateFlags = VkFlags - -@cenum VkPipelineStageFlagBits::UInt32 begin - VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 1 - VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 2 - VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 4 - VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 8 - VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 16 - VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 32 - VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 64 - VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 128 - VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 256 - VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 512 - VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 1024 - VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 2048 - VK_PIPELINE_STAGE_TRANSFER_BIT = 4096 - VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 8192 - VK_PIPELINE_STAGE_HOST_BIT = 16384 - VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 32768 - VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 65536 - VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 - VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 - VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 - VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 - VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 - VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 - VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 - VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 - VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 - VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 - VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkPipelineStageFlags = VkFlags - -const VkMemoryMapFlags = VkFlags - -@cenum VkSparseMemoryBindFlagBits::UInt32 begin - VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 - VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkSparseMemoryBindFlags = VkFlags - -@cenum VkSparseImageFormatFlagBits::UInt32 begin - VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 1 - VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 2 - VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 4 - VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkSparseImageFormatFlags = VkFlags - -@cenum VkFenceCreateFlagBits::UInt32 begin - VK_FENCE_CREATE_SIGNALED_BIT = 1 - VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkFenceCreateFlags = VkFlags - -const VkSemaphoreCreateFlags = VkFlags - -const VkEventCreateFlags = VkFlags - -@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin - VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 1 - VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 2 - VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 4 - VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 8 - VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 16 - VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 32 - VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 64 - VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 128 - VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 256 - VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 512 - VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 1024 - VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkQueryPipelineStatisticFlags = VkFlags - -const VkQueryPoolCreateFlags = VkFlags - -@cenum VkQueryResultFlagBits::UInt32 begin - VK_QUERY_RESULT_64_BIT = 1 - VK_QUERY_RESULT_WAIT_BIT = 2 - VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 4 - VK_QUERY_RESULT_PARTIAL_BIT = 8 - VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkQueryResultFlags = VkFlags - -@cenum VkBufferCreateFlagBits::UInt32 begin - VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 - VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 - VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 - VK_BUFFER_CREATE_PROTECTED_BIT = 8 - VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 - VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 - VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 - VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkBufferCreateFlags = VkFlags - -@cenum VkBufferUsageFlagBits::UInt32 begin - VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 - VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 - VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 - VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 - VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 - VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 - VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 - VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 - VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 - VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 - VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 - VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 - VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 - VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 - VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkBufferUsageFlags = VkFlags - -const VkBufferViewCreateFlags = VkFlags - -@cenum VkImageViewCreateFlagBits::UInt32 begin - VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 - VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 - VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkImageViewCreateFlags = VkFlags - -@cenum VkShaderModuleCreateFlagBits::UInt32 begin - VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkShaderModuleCreateFlags = VkFlags - -@cenum VkPipelineCacheCreateFlagBits::UInt32 begin - VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 - VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkPipelineCacheCreateFlags = VkFlags - -@cenum VkColorComponentFlagBits::UInt32 begin - VK_COLOR_COMPONENT_R_BIT = 1 - VK_COLOR_COMPONENT_G_BIT = 2 - VK_COLOR_COMPONENT_B_BIT = 4 - VK_COLOR_COMPONENT_A_BIT = 8 - VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkColorComponentFlags = VkFlags - -@cenum VkPipelineCreateFlagBits::UInt32 begin - VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 - VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 - VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 - VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 - VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 - VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 - VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 - VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 - VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 - VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 - VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 - VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 - VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 - VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 - VK_PIPELINE_CREATE_DISPATCH_BASE = 16 - VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 8 - VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 16 - VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkPipelineCreateFlags = VkFlags - -@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin - VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 - VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 - VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkPipelineShaderStageCreateFlags = VkFlags - -@cenum VkShaderStageFlagBits::UInt32 begin - VK_SHADER_STAGE_VERTEX_BIT = 1 - VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 2 - VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 4 - VK_SHADER_STAGE_GEOMETRY_BIT = 8 - VK_SHADER_STAGE_FRAGMENT_BIT = 16 - VK_SHADER_STAGE_COMPUTE_BIT = 32 - VK_SHADER_STAGE_ALL_GRAPHICS = 31 - VK_SHADER_STAGE_ALL = 2147483647 - VK_SHADER_STAGE_RAYGEN_BIT_KHR = 256 - VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 - VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 - VK_SHADER_STAGE_MISS_BIT_KHR = 2048 - VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 - VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 - VK_SHADER_STAGE_TASK_BIT_NV = 64 - VK_SHADER_STAGE_MESH_BIT_NV = 128 - VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 - VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 - VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 - VK_SHADER_STAGE_MISS_BIT_NV = 2048 - VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 - VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 - VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -@cenum VkCullModeFlagBits::UInt32 begin - VK_CULL_MODE_NONE = 0 - VK_CULL_MODE_FRONT_BIT = 1 - VK_CULL_MODE_BACK_BIT = 2 - VK_CULL_MODE_FRONT_AND_BACK = 3 - VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkCullModeFlags = VkFlags - -const VkPipelineVertexInputStateCreateFlags = VkFlags - -const VkPipelineInputAssemblyStateCreateFlags = VkFlags - -const VkPipelineTessellationStateCreateFlags = VkFlags - -const VkPipelineViewportStateCreateFlags = VkFlags - -const VkPipelineRasterizationStateCreateFlags = VkFlags - -const VkPipelineMultisampleStateCreateFlags = VkFlags - -const VkPipelineDepthStencilStateCreateFlags = VkFlags - -const VkPipelineColorBlendStateCreateFlags = VkFlags - -const VkPipelineDynamicStateCreateFlags = VkFlags - -const VkPipelineLayoutCreateFlags = VkFlags - -const VkShaderStageFlags = VkFlags - -@cenum VkSamplerCreateFlagBits::UInt32 begin - VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 - VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 - VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkSamplerCreateFlags = VkFlags - -@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin - VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 - VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 - VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 - VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkDescriptorPoolCreateFlags = VkFlags - -const VkDescriptorPoolResetFlags = VkFlags - -@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin - VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 - VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1 - VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2 - VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkDescriptorSetLayoutCreateFlags = VkFlags - -@cenum VkAttachmentDescriptionFlagBits::UInt32 begin - VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 - VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkAttachmentDescriptionFlags = VkFlags - -@cenum VkDependencyFlagBits::UInt32 begin - VK_DEPENDENCY_BY_REGION_BIT = 1 - VK_DEPENDENCY_DEVICE_GROUP_BIT = 4 - VK_DEPENDENCY_VIEW_LOCAL_BIT = 2 - VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 2 - VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 4 - VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkDependencyFlags = VkFlags - -@cenum VkFramebufferCreateFlagBits::UInt32 begin - VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 - VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 - VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkFramebufferCreateFlags = VkFlags - -@cenum VkRenderPassCreateFlagBits::UInt32 begin - VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 - VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkRenderPassCreateFlags = VkFlags - -@cenum VkSubpassDescriptionFlagBits::UInt32 begin - VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 - VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 - VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 - VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 - VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkSubpassDescriptionFlags = VkFlags - -@cenum VkCommandPoolCreateFlagBits::UInt32 begin - VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 1 - VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 2 - VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 4 - VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +const IS_LIBC_MUSL = occursin("musl", Base.BUILD_TRIPLET) +if Sys.isapple() && Sys.ARCH === :aarch64 + include("../lib/aarch64-apple-darwin20.jl") +elseif Sys.islinux() && Sys.ARCH === :aarch64 && !IS_LIBC_MUSL + include("../lib/aarch64-linux-gnu.jl") +elseif Sys.islinux() && Sys.ARCH === :aarch64 && IS_LIBC_MUSL + include("../lib/aarch64-linux-musl.jl") +elseif Sys.islinux() && startswith(string(Sys.ARCH), "arm") && !IS_LIBC_MUSL + include("../lib/armv7l-linux-gnueabihf.jl") +elseif Sys.islinux() && startswith(string(Sys.ARCH), "arm") && IS_LIBC_MUSL + include("../lib/armv7l-linux-musleabihf.jl") +elseif Sys.islinux() && Sys.ARCH === :i686 && !IS_LIBC_MUSL + include("../lib/i686-linux-gnu.jl") +elseif Sys.islinux() && Sys.ARCH === :i686 && IS_LIBC_MUSL + include("../lib/i686-linux-musl.jl") +elseif Sys.iswindows() && Sys.ARCH === :i686 + include("../lib/i686-w64-mingw32.jl") +elseif Sys.islinux() && Sys.ARCH === :powerpc64le + include("../lib/powerpc64le-linux-gnu.jl") +elseif Sys.isapple() && Sys.ARCH === :x86_64 + include("../lib/x86_64-apple-darwin14.jl") +elseif Sys.islinux() && Sys.ARCH === :x86_64 && !IS_LIBC_MUSL + include("../lib/x86_64-linux-gnu.jl") +elseif Sys.islinux() && Sys.ARCH === :x86_64 && IS_LIBC_MUSL + include("../lib/x86_64-linux-musl.jl") +elseif Sys.isbsd() && !Sys.isapple() + include("../lib/x86_64-unknown-freebsd11.1.jl") +elseif Sys.iswindows() && Sys.ARCH === :x86_64 + include("../lib/x86_64-w64-mingw32.jl") +else + error("Unknown platform: $(Base.BUILD_TRIPLET)") end -const VkCommandPoolCreateFlags = VkFlags - -@cenum VkCommandPoolResetFlagBits::UInt32 begin - VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 - VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkCommandPoolResetFlags = VkFlags - -@cenum VkCommandBufferUsageFlagBits::UInt32 begin - VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 1 - VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 2 - VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 4 - VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkCommandBufferUsageFlags = VkFlags - -@cenum VkQueryControlFlagBits::UInt32 begin - VK_QUERY_CONTROL_PRECISE_BIT = 1 - VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkQueryControlFlags = VkFlags - -@cenum VkCommandBufferResetFlagBits::UInt32 begin - VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 - VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkCommandBufferResetFlags = VkFlags - -@cenum VkStencilFaceFlagBits::UInt32 begin - VK_STENCIL_FACE_FRONT_BIT = 1 - VK_STENCIL_FACE_BACK_BIT = 2 - VK_STENCIL_FACE_FRONT_AND_BACK = 3 - VK_STENCIL_FRONT_AND_BACK = 3 - VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkStencilFaceFlags = VkFlags - -struct VkExtent2D - width::UInt32 - height::UInt32 -end - -struct VkExtent3D - width::UInt32 - height::UInt32 - depth::UInt32 -end - -struct VkOffset2D - x::Int32 - y::Int32 -end - -struct VkOffset3D - x::Int32 - y::Int32 - z::Int32 -end - -struct VkRect2D - offset::VkOffset2D - extent::VkExtent2D -end - -struct VkBaseInStructure - sType::VkStructureType - pNext::Ptr{VkBaseInStructure} -end - -struct VkBaseOutStructure - sType::VkStructureType - pNext::Ptr{VkBaseOutStructure} -end - -struct VkBufferMemoryBarrier - sType::VkStructureType - pNext::Ptr{Cvoid} - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags - srcQueueFamilyIndex::UInt32 - dstQueueFamilyIndex::UInt32 - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize -end - -struct VkDispatchIndirectCommand - x::UInt32 - y::UInt32 - z::UInt32 -end - -struct VkDrawIndexedIndirectCommand - indexCount::UInt32 - instanceCount::UInt32 - firstIndex::UInt32 - vertexOffset::Int32 - firstInstance::UInt32 -end - -struct VkDrawIndirectCommand - vertexCount::UInt32 - instanceCount::UInt32 - firstVertex::UInt32 - firstInstance::UInt32 -end - -struct VkImageSubresourceRange - aspectMask::VkImageAspectFlags - baseMipLevel::UInt32 - levelCount::UInt32 - baseArrayLayer::UInt32 - layerCount::UInt32 -end - -struct VkImageMemoryBarrier - sType::VkStructureType - pNext::Ptr{Cvoid} - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags - oldLayout::VkImageLayout - newLayout::VkImageLayout - srcQueueFamilyIndex::UInt32 - dstQueueFamilyIndex::UInt32 - image::VkImage - subresourceRange::VkImageSubresourceRange -end - -struct VkMemoryBarrier - sType::VkStructureType - pNext::Ptr{Cvoid} - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags -end - -# C code: -# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) -const PFN_vkAllocationFunction = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) -const PFN_vkFreeFunction = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) -const PFN_vkInternalAllocationNotification = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) -const PFN_vkInternalFreeNotification = Ptr{Cvoid} - -# C code: -# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) -const PFN_vkReallocationFunction = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) -const PFN_vkVoidFunction = Ptr{Cvoid} - -struct VkAllocationCallbacks - pUserData::Ptr{Cvoid} - pfnAllocation::PFN_vkAllocationFunction - pfnReallocation::PFN_vkReallocationFunction - pfnFree::PFN_vkFreeFunction - pfnInternalAllocation::PFN_vkInternalAllocationNotification - pfnInternalFree::PFN_vkInternalFreeNotification -end - -struct VkApplicationInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - pApplicationName::Ptr{Cchar} - applicationVersion::UInt32 - pEngineName::Ptr{Cchar} - engineVersion::UInt32 - apiVersion::UInt32 -end - -struct VkFormatProperties - linearTilingFeatures::VkFormatFeatureFlags - optimalTilingFeatures::VkFormatFeatureFlags - bufferFeatures::VkFormatFeatureFlags -end - -struct VkImageFormatProperties - maxExtent::VkExtent3D - maxMipLevels::UInt32 - maxArrayLayers::UInt32 - sampleCounts::VkSampleCountFlags - maxResourceSize::VkDeviceSize -end - -struct VkInstanceCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkInstanceCreateFlags - pApplicationInfo::Ptr{VkApplicationInfo} - enabledLayerCount::UInt32 - ppEnabledLayerNames::Ptr{Ptr{Cchar}} - enabledExtensionCount::UInt32 - ppEnabledExtensionNames::Ptr{Ptr{Cchar}} -end - -struct VkMemoryHeap - size::VkDeviceSize - flags::VkMemoryHeapFlags -end - -struct VkMemoryType - propertyFlags::VkMemoryPropertyFlags - heapIndex::UInt32 -end - -struct VkPhysicalDeviceFeatures - robustBufferAccess::VkBool32 - fullDrawIndexUint32::VkBool32 - imageCubeArray::VkBool32 - independentBlend::VkBool32 - geometryShader::VkBool32 - tessellationShader::VkBool32 - sampleRateShading::VkBool32 - dualSrcBlend::VkBool32 - logicOp::VkBool32 - multiDrawIndirect::VkBool32 - drawIndirectFirstInstance::VkBool32 - depthClamp::VkBool32 - depthBiasClamp::VkBool32 - fillModeNonSolid::VkBool32 - depthBounds::VkBool32 - wideLines::VkBool32 - largePoints::VkBool32 - alphaToOne::VkBool32 - multiViewport::VkBool32 - samplerAnisotropy::VkBool32 - textureCompressionETC2::VkBool32 - textureCompressionASTC_LDR::VkBool32 - textureCompressionBC::VkBool32 - occlusionQueryPrecise::VkBool32 - pipelineStatisticsQuery::VkBool32 - vertexPipelineStoresAndAtomics::VkBool32 - fragmentStoresAndAtomics::VkBool32 - shaderTessellationAndGeometryPointSize::VkBool32 - shaderImageGatherExtended::VkBool32 - shaderStorageImageExtendedFormats::VkBool32 - shaderStorageImageMultisample::VkBool32 - shaderStorageImageReadWithoutFormat::VkBool32 - shaderStorageImageWriteWithoutFormat::VkBool32 - shaderUniformBufferArrayDynamicIndexing::VkBool32 - shaderSampledImageArrayDynamicIndexing::VkBool32 - shaderStorageBufferArrayDynamicIndexing::VkBool32 - shaderStorageImageArrayDynamicIndexing::VkBool32 - shaderClipDistance::VkBool32 - shaderCullDistance::VkBool32 - shaderFloat64::VkBool32 - shaderInt64::VkBool32 - shaderInt16::VkBool32 - shaderResourceResidency::VkBool32 - shaderResourceMinLod::VkBool32 - sparseBinding::VkBool32 - sparseResidencyBuffer::VkBool32 - sparseResidencyImage2D::VkBool32 - sparseResidencyImage3D::VkBool32 - sparseResidency2Samples::VkBool32 - sparseResidency4Samples::VkBool32 - sparseResidency8Samples::VkBool32 - sparseResidency16Samples::VkBool32 - sparseResidencyAliased::VkBool32 - variableMultisampleRate::VkBool32 - inheritedQueries::VkBool32 -end - -struct VkPhysicalDeviceLimits - maxImageDimension1D::UInt32 - maxImageDimension2D::UInt32 - maxImageDimension3D::UInt32 - maxImageDimensionCube::UInt32 - maxImageArrayLayers::UInt32 - maxTexelBufferElements::UInt32 - maxUniformBufferRange::UInt32 - maxStorageBufferRange::UInt32 - maxPushConstantsSize::UInt32 - maxMemoryAllocationCount::UInt32 - maxSamplerAllocationCount::UInt32 - bufferImageGranularity::VkDeviceSize - sparseAddressSpaceSize::VkDeviceSize - maxBoundDescriptorSets::UInt32 - maxPerStageDescriptorSamplers::UInt32 - maxPerStageDescriptorUniformBuffers::UInt32 - maxPerStageDescriptorStorageBuffers::UInt32 - maxPerStageDescriptorSampledImages::UInt32 - maxPerStageDescriptorStorageImages::UInt32 - maxPerStageDescriptorInputAttachments::UInt32 - maxPerStageResources::UInt32 - maxDescriptorSetSamplers::UInt32 - maxDescriptorSetUniformBuffers::UInt32 - maxDescriptorSetUniformBuffersDynamic::UInt32 - maxDescriptorSetStorageBuffers::UInt32 - maxDescriptorSetStorageBuffersDynamic::UInt32 - maxDescriptorSetSampledImages::UInt32 - maxDescriptorSetStorageImages::UInt32 - maxDescriptorSetInputAttachments::UInt32 - maxVertexInputAttributes::UInt32 - maxVertexInputBindings::UInt32 - maxVertexInputAttributeOffset::UInt32 - maxVertexInputBindingStride::UInt32 - maxVertexOutputComponents::UInt32 - maxTessellationGenerationLevel::UInt32 - maxTessellationPatchSize::UInt32 - maxTessellationControlPerVertexInputComponents::UInt32 - maxTessellationControlPerVertexOutputComponents::UInt32 - maxTessellationControlPerPatchOutputComponents::UInt32 - maxTessellationControlTotalOutputComponents::UInt32 - maxTessellationEvaluationInputComponents::UInt32 - maxTessellationEvaluationOutputComponents::UInt32 - maxGeometryShaderInvocations::UInt32 - maxGeometryInputComponents::UInt32 - maxGeometryOutputComponents::UInt32 - maxGeometryOutputVertices::UInt32 - maxGeometryTotalOutputComponents::UInt32 - maxFragmentInputComponents::UInt32 - maxFragmentOutputAttachments::UInt32 - maxFragmentDualSrcAttachments::UInt32 - maxFragmentCombinedOutputResources::UInt32 - maxComputeSharedMemorySize::UInt32 - maxComputeWorkGroupCount::NTuple{3, UInt32} - maxComputeWorkGroupInvocations::UInt32 - maxComputeWorkGroupSize::NTuple{3, UInt32} - subPixelPrecisionBits::UInt32 - subTexelPrecisionBits::UInt32 - mipmapPrecisionBits::UInt32 - maxDrawIndexedIndexValue::UInt32 - maxDrawIndirectCount::UInt32 - maxSamplerLodBias::Cfloat - maxSamplerAnisotropy::Cfloat - maxViewports::UInt32 - maxViewportDimensions::NTuple{2, UInt32} - viewportBoundsRange::NTuple{2, Cfloat} - viewportSubPixelBits::UInt32 - minMemoryMapAlignment::Csize_t - minTexelBufferOffsetAlignment::VkDeviceSize - minUniformBufferOffsetAlignment::VkDeviceSize - minStorageBufferOffsetAlignment::VkDeviceSize - minTexelOffset::Int32 - maxTexelOffset::UInt32 - minTexelGatherOffset::Int32 - maxTexelGatherOffset::UInt32 - minInterpolationOffset::Cfloat - maxInterpolationOffset::Cfloat - subPixelInterpolationOffsetBits::UInt32 - maxFramebufferWidth::UInt32 - maxFramebufferHeight::UInt32 - maxFramebufferLayers::UInt32 - framebufferColorSampleCounts::VkSampleCountFlags - framebufferDepthSampleCounts::VkSampleCountFlags - framebufferStencilSampleCounts::VkSampleCountFlags - framebufferNoAttachmentsSampleCounts::VkSampleCountFlags - maxColorAttachments::UInt32 - sampledImageColorSampleCounts::VkSampleCountFlags - sampledImageIntegerSampleCounts::VkSampleCountFlags - sampledImageDepthSampleCounts::VkSampleCountFlags - sampledImageStencilSampleCounts::VkSampleCountFlags - storageImageSampleCounts::VkSampleCountFlags - maxSampleMaskWords::UInt32 - timestampComputeAndGraphics::VkBool32 - timestampPeriod::Cfloat - maxClipDistances::UInt32 - maxCullDistances::UInt32 - maxCombinedClipAndCullDistances::UInt32 - discreteQueuePriorities::UInt32 - pointSizeRange::NTuple{2, Cfloat} - lineWidthRange::NTuple{2, Cfloat} - pointSizeGranularity::Cfloat - lineWidthGranularity::Cfloat - strictLines::VkBool32 - standardSampleLocations::VkBool32 - optimalBufferCopyOffsetAlignment::VkDeviceSize - optimalBufferCopyRowPitchAlignment::VkDeviceSize - nonCoherentAtomSize::VkDeviceSize -end - -struct VkPhysicalDeviceMemoryProperties - memoryTypeCount::UInt32 - memoryTypes::NTuple{32, VkMemoryType} - memoryHeapCount::UInt32 - memoryHeaps::NTuple{16, VkMemoryHeap} -end - -struct VkPhysicalDeviceSparseProperties - residencyStandard2DBlockShape::VkBool32 - residencyStandard2DMultisampleBlockShape::VkBool32 - residencyStandard3DBlockShape::VkBool32 - residencyAlignedMipSize::VkBool32 - residencyNonResidentStrict::VkBool32 -end - -struct VkPhysicalDeviceProperties - apiVersion::UInt32 - driverVersion::UInt32 - vendorID::UInt32 - deviceID::UInt32 - deviceType::VkPhysicalDeviceType - deviceName::NTuple{256, Cchar} - pipelineCacheUUID::NTuple{16, UInt8} - limits::VkPhysicalDeviceLimits - sparseProperties::VkPhysicalDeviceSparseProperties -end - -struct VkQueueFamilyProperties - queueFlags::VkQueueFlags - queueCount::UInt32 - timestampValidBits::UInt32 - minImageTransferGranularity::VkExtent3D -end - -struct VkDeviceQueueCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceQueueCreateFlags - queueFamilyIndex::UInt32 - queueCount::UInt32 - pQueuePriorities::Ptr{Cfloat} -end - -struct VkDeviceCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceCreateFlags - queueCreateInfoCount::UInt32 - pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} - enabledLayerCount::UInt32 - ppEnabledLayerNames::Ptr{Ptr{Cchar}} - enabledExtensionCount::UInt32 - ppEnabledExtensionNames::Ptr{Ptr{Cchar}} - pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} -end - -struct VkExtensionProperties - extensionName::NTuple{256, Cchar} - specVersion::UInt32 -end - -struct VkLayerProperties - layerName::NTuple{256, Cchar} - specVersion::UInt32 - implementationVersion::UInt32 - description::NTuple{256, Cchar} -end - -struct VkSubmitInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - pWaitDstStageMask::Ptr{VkPipelineStageFlags} - commandBufferCount::UInt32 - pCommandBuffers::Ptr{VkCommandBuffer} - signalSemaphoreCount::UInt32 - pSignalSemaphores::Ptr{VkSemaphore} -end - -struct VkMappedMemoryRange - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - offset::VkDeviceSize - size::VkDeviceSize -end - -struct VkMemoryAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - allocationSize::VkDeviceSize - memoryTypeIndex::UInt32 -end - -struct VkMemoryRequirements - size::VkDeviceSize - alignment::VkDeviceSize - memoryTypeBits::UInt32 -end - -struct VkSparseMemoryBind - resourceOffset::VkDeviceSize - size::VkDeviceSize - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - flags::VkSparseMemoryBindFlags -end - -struct VkSparseBufferMemoryBindInfo - buffer::VkBuffer - bindCount::UInt32 - pBinds::Ptr{VkSparseMemoryBind} -end - -struct VkSparseImageOpaqueMemoryBindInfo - image::VkImage - bindCount::UInt32 - pBinds::Ptr{VkSparseMemoryBind} -end - -struct VkImageSubresource - aspectMask::VkImageAspectFlags - mipLevel::UInt32 - arrayLayer::UInt32 -end - -struct VkSparseImageMemoryBind - subresource::VkImageSubresource - offset::VkOffset3D - extent::VkExtent3D - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - flags::VkSparseMemoryBindFlags -end - -struct VkSparseImageMemoryBindInfo - image::VkImage - bindCount::UInt32 - pBinds::Ptr{VkSparseImageMemoryBind} -end - -struct VkBindSparseInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - bufferBindCount::UInt32 - pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} - imageOpaqueBindCount::UInt32 - pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} - imageBindCount::UInt32 - pImageBinds::Ptr{VkSparseImageMemoryBindInfo} - signalSemaphoreCount::UInt32 - pSignalSemaphores::Ptr{VkSemaphore} -end - -struct VkSparseImageFormatProperties - aspectMask::VkImageAspectFlags - imageGranularity::VkExtent3D - flags::VkSparseImageFormatFlags -end - -struct VkSparseImageMemoryRequirements - formatProperties::VkSparseImageFormatProperties - imageMipTailFirstLod::UInt32 - imageMipTailSize::VkDeviceSize - imageMipTailOffset::VkDeviceSize - imageMipTailStride::VkDeviceSize -end - -struct VkFenceCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkFenceCreateFlags -end - -struct VkSemaphoreCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkSemaphoreCreateFlags -end - -struct VkEventCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkEventCreateFlags -end - -struct VkQueryPoolCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkQueryPoolCreateFlags - queryType::VkQueryType - queryCount::UInt32 - pipelineStatistics::VkQueryPipelineStatisticFlags -end - -struct VkBufferCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkBufferCreateFlags - size::VkDeviceSize - usage::VkBufferUsageFlags - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} -end - -struct VkBufferViewCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkBufferViewCreateFlags - buffer::VkBuffer - format::VkFormat - offset::VkDeviceSize - range::VkDeviceSize -end - -struct VkImageCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkImageCreateFlags - imageType::VkImageType - format::VkFormat - extent::VkExtent3D - mipLevels::UInt32 - arrayLayers::UInt32 - samples::VkSampleCountFlagBits - tiling::VkImageTiling - usage::VkImageUsageFlags - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} - initialLayout::VkImageLayout -end - -struct VkSubresourceLayout - offset::VkDeviceSize - size::VkDeviceSize - rowPitch::VkDeviceSize - arrayPitch::VkDeviceSize - depthPitch::VkDeviceSize -end - -struct VkComponentMapping - r::VkComponentSwizzle - g::VkComponentSwizzle - b::VkComponentSwizzle - a::VkComponentSwizzle -end - -struct VkImageViewCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkImageViewCreateFlags - image::VkImage - viewType::VkImageViewType - format::VkFormat - components::VkComponentMapping - subresourceRange::VkImageSubresourceRange -end - -struct VkShaderModuleCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkShaderModuleCreateFlags - codeSize::Csize_t - pCode::Ptr{UInt32} -end - -struct VkPipelineCacheCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCacheCreateFlags - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} -end - -struct VkSpecializationMapEntry - constantID::UInt32 - offset::UInt32 - size::Csize_t -end - -struct VkSpecializationInfo - mapEntryCount::UInt32 - pMapEntries::Ptr{VkSpecializationMapEntry} - dataSize::Csize_t - pData::Ptr{Cvoid} -end - -struct VkPipelineShaderStageCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineShaderStageCreateFlags - stage::VkShaderStageFlagBits - _module::VkShaderModule - pName::Ptr{Cchar} - pSpecializationInfo::Ptr{VkSpecializationInfo} -end - -struct VkComputePipelineCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCreateFlags - stage::VkPipelineShaderStageCreateInfo - layout::VkPipelineLayout - basePipelineHandle::VkPipeline - basePipelineIndex::Int32 -end - -struct VkVertexInputBindingDescription - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate -end - -struct VkVertexInputAttributeDescription - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 -end - -struct VkPipelineVertexInputStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineVertexInputStateCreateFlags - vertexBindingDescriptionCount::UInt32 - pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} - vertexAttributeDescriptionCount::UInt32 - pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} -end - -struct VkPipelineInputAssemblyStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineInputAssemblyStateCreateFlags - topology::VkPrimitiveTopology - primitiveRestartEnable::VkBool32 -end - -struct VkPipelineTessellationStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineTessellationStateCreateFlags - patchControlPoints::UInt32 -end - -struct VkViewport - x::Cfloat - y::Cfloat - width::Cfloat - height::Cfloat - minDepth::Cfloat - maxDepth::Cfloat -end - -struct VkPipelineViewportStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineViewportStateCreateFlags - viewportCount::UInt32 - pViewports::Ptr{VkViewport} - scissorCount::UInt32 - pScissors::Ptr{VkRect2D} -end - -struct VkPipelineRasterizationStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateCreateFlags - depthClampEnable::VkBool32 - rasterizerDiscardEnable::VkBool32 - polygonMode::VkPolygonMode - cullMode::VkCullModeFlags - frontFace::VkFrontFace - depthBiasEnable::VkBool32 - depthBiasConstantFactor::Cfloat - depthBiasClamp::Cfloat - depthBiasSlopeFactor::Cfloat - lineWidth::Cfloat -end - -struct VkPipelineMultisampleStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineMultisampleStateCreateFlags - rasterizationSamples::VkSampleCountFlagBits - sampleShadingEnable::VkBool32 - minSampleShading::Cfloat - pSampleMask::Ptr{VkSampleMask} - alphaToCoverageEnable::VkBool32 - alphaToOneEnable::VkBool32 -end - -struct VkStencilOpState - failOp::VkStencilOp - passOp::VkStencilOp - depthFailOp::VkStencilOp - compareOp::VkCompareOp - compareMask::UInt32 - writeMask::UInt32 - reference::UInt32 -end - -struct VkPipelineDepthStencilStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineDepthStencilStateCreateFlags - depthTestEnable::VkBool32 - depthWriteEnable::VkBool32 - depthCompareOp::VkCompareOp - depthBoundsTestEnable::VkBool32 - stencilTestEnable::VkBool32 - front::VkStencilOpState - back::VkStencilOpState - minDepthBounds::Cfloat - maxDepthBounds::Cfloat -end - -struct VkPipelineColorBlendAttachmentState - blendEnable::VkBool32 - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp - colorWriteMask::VkColorComponentFlags -end - -struct VkPipelineColorBlendStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineColorBlendStateCreateFlags - logicOpEnable::VkBool32 - logicOp::VkLogicOp - attachmentCount::UInt32 - pAttachments::Ptr{VkPipelineColorBlendAttachmentState} - blendConstants::NTuple{4, Cfloat} -end - -struct VkPipelineDynamicStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineDynamicStateCreateFlags - dynamicStateCount::UInt32 - pDynamicStates::Ptr{VkDynamicState} -end - -struct VkGraphicsPipelineCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCreateFlags - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} - pViewportState::Ptr{VkPipelineViewportStateCreateInfo} - pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} - pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} - pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} - pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} - pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} - layout::VkPipelineLayout - renderPass::VkRenderPass - subpass::UInt32 - basePipelineHandle::VkPipeline - basePipelineIndex::Int32 -end - -struct VkPushConstantRange - stageFlags::VkShaderStageFlags - offset::UInt32 - size::UInt32 -end - -struct VkPipelineLayoutCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineLayoutCreateFlags - setLayoutCount::UInt32 - pSetLayouts::Ptr{VkDescriptorSetLayout} - pushConstantRangeCount::UInt32 - pPushConstantRanges::Ptr{VkPushConstantRange} -end - -struct VkSamplerCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkSamplerCreateFlags - magFilter::VkFilter - minFilter::VkFilter - mipmapMode::VkSamplerMipmapMode - addressModeU::VkSamplerAddressMode - addressModeV::VkSamplerAddressMode - addressModeW::VkSamplerAddressMode - mipLodBias::Cfloat - anisotropyEnable::VkBool32 - maxAnisotropy::Cfloat - compareEnable::VkBool32 - compareOp::VkCompareOp - minLod::Cfloat - maxLod::Cfloat - borderColor::VkBorderColor - unnormalizedCoordinates::VkBool32 -end - -struct VkCopyDescriptorSet - sType::VkStructureType - pNext::Ptr{Cvoid} - srcSet::VkDescriptorSet - srcBinding::UInt32 - srcArrayElement::UInt32 - dstSet::VkDescriptorSet - dstBinding::UInt32 - dstArrayElement::UInt32 - descriptorCount::UInt32 -end - -struct VkDescriptorBufferInfo - buffer::VkBuffer - offset::VkDeviceSize - range::VkDeviceSize -end - -struct VkDescriptorImageInfo - sampler::VkSampler - imageView::VkImageView - imageLayout::VkImageLayout -end - -struct VkDescriptorPoolSize - type::VkDescriptorType - descriptorCount::UInt32 -end - -struct VkDescriptorPoolCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDescriptorPoolCreateFlags - maxSets::UInt32 - poolSizeCount::UInt32 - pPoolSizes::Ptr{VkDescriptorPoolSize} -end - -struct VkDescriptorSetAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorPool::VkDescriptorPool - descriptorSetCount::UInt32 - pSetLayouts::Ptr{VkDescriptorSetLayout} -end - -struct VkDescriptorSetLayoutBinding - binding::UInt32 - descriptorType::VkDescriptorType - descriptorCount::UInt32 - stageFlags::VkShaderStageFlags - pImmutableSamplers::Ptr{VkSampler} -end - -struct VkDescriptorSetLayoutCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDescriptorSetLayoutCreateFlags - bindingCount::UInt32 - pBindings::Ptr{VkDescriptorSetLayoutBinding} -end - -struct VkWriteDescriptorSet - sType::VkStructureType - pNext::Ptr{Cvoid} - dstSet::VkDescriptorSet - dstBinding::UInt32 - dstArrayElement::UInt32 - descriptorCount::UInt32 - descriptorType::VkDescriptorType - pImageInfo::Ptr{VkDescriptorImageInfo} - pBufferInfo::Ptr{VkDescriptorBufferInfo} - pTexelBufferView::Ptr{VkBufferView} -end - -struct VkAttachmentDescription - flags::VkAttachmentDescriptionFlags - format::VkFormat - samples::VkSampleCountFlagBits - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - stencilLoadOp::VkAttachmentLoadOp - stencilStoreOp::VkAttachmentStoreOp - initialLayout::VkImageLayout - finalLayout::VkImageLayout -end - -struct VkAttachmentReference - attachment::UInt32 - layout::VkImageLayout -end - -struct VkFramebufferCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkFramebufferCreateFlags - renderPass::VkRenderPass - attachmentCount::UInt32 - pAttachments::Ptr{VkImageView} - width::UInt32 - height::UInt32 - layers::UInt32 -end - -struct VkSubpassDescription - flags::VkSubpassDescriptionFlags - pipelineBindPoint::VkPipelineBindPoint - inputAttachmentCount::UInt32 - pInputAttachments::Ptr{VkAttachmentReference} - colorAttachmentCount::UInt32 - pColorAttachments::Ptr{VkAttachmentReference} - pResolveAttachments::Ptr{VkAttachmentReference} - pDepthStencilAttachment::Ptr{VkAttachmentReference} - preserveAttachmentCount::UInt32 - pPreserveAttachments::Ptr{UInt32} -end - -struct VkSubpassDependency - srcSubpass::UInt32 - dstSubpass::UInt32 - srcStageMask::VkPipelineStageFlags - dstStageMask::VkPipelineStageFlags - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags - dependencyFlags::VkDependencyFlags -end - -struct VkRenderPassCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkRenderPassCreateFlags - attachmentCount::UInt32 - pAttachments::Ptr{VkAttachmentDescription} - subpassCount::UInt32 - pSubpasses::Ptr{VkSubpassDescription} - dependencyCount::UInt32 - pDependencies::Ptr{VkSubpassDependency} -end - -struct VkCommandPoolCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkCommandPoolCreateFlags - queueFamilyIndex::UInt32 -end - -struct VkCommandBufferAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - commandPool::VkCommandPool - level::VkCommandBufferLevel - commandBufferCount::UInt32 -end - -struct VkCommandBufferInheritanceInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 - framebuffer::VkFramebuffer - occlusionQueryEnable::VkBool32 - queryFlags::VkQueryControlFlags - pipelineStatistics::VkQueryPipelineStatisticFlags -end - -struct VkCommandBufferBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkCommandBufferUsageFlags - pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} -end - -struct VkBufferCopy - srcOffset::VkDeviceSize - dstOffset::VkDeviceSize - size::VkDeviceSize -end - -struct VkImageSubresourceLayers - aspectMask::VkImageAspectFlags - mipLevel::UInt32 - baseArrayLayer::UInt32 - layerCount::UInt32 -end - -struct VkBufferImageCopy - bufferOffset::VkDeviceSize - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D -end - -struct VkClearColorValue - data::NTuple{16, UInt8} -end - -function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) - f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) - f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) - f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) - return getfield(x, f) -end - -function Base.getproperty(x::VkClearColorValue, f::Symbol) - r = Ref{VkClearColorValue}(x) - ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) - GC.@preserve r unsafe_load(getproperty(ptr, f)) -end - -function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end - -struct VkClearDepthStencilValue - depth::Cfloat - stencil::UInt32 -end - -struct VkClearValue - data::NTuple{16, UInt8} -end - -function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) - f === :color && return Ptr{VkClearColorValue}(x + 0) - f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) - return getfield(x, f) -end - -function Base.getproperty(x::VkClearValue, f::Symbol) - r = Ref{VkClearValue}(x) - ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) - GC.@preserve r unsafe_load(getproperty(ptr, f)) -end - -function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end - -struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue -end - -struct VkClearRect - rect::VkRect2D - baseArrayLayer::UInt32 - layerCount::UInt32 -end - -struct VkImageBlit - srcSubresource::VkImageSubresourceLayers - srcOffsets::NTuple{2, VkOffset3D} - dstSubresource::VkImageSubresourceLayers - dstOffsets::NTuple{2, VkOffset3D} -end - -struct VkImageCopy - srcSubresource::VkImageSubresourceLayers - srcOffset::VkOffset3D - dstSubresource::VkImageSubresourceLayers - dstOffset::VkOffset3D - extent::VkExtent3D -end - -struct VkImageResolve - srcSubresource::VkImageSubresourceLayers - srcOffset::VkOffset3D - dstSubresource::VkImageSubresourceLayers - dstOffset::VkOffset3D - extent::VkExtent3D -end - -struct VkRenderPassBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - framebuffer::VkFramebuffer - renderArea::VkRect2D - clearValueCount::UInt32 - pClearValues::Ptr{VkClearValue} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) -const PFN_vkCreateInstance = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyInstance = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) -const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) -const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) -const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) -const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) -const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) -const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} - -# C code: -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) -const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} - -# C code: -# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) -const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) -const PFN_vkCreateDevice = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDevice = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) -const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) -const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) -const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) -const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) -const PFN_vkGetDeviceQueue = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) -const PFN_vkQueueSubmit = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) -const PFN_vkQueueWaitIdle = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) -const PFN_vkDeviceWaitIdle = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) -const PFN_vkAllocateMemory = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) -const PFN_vkFreeMemory = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) -const PFN_vkMapMemory = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) -const PFN_vkUnmapMemory = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) -const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) -const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) -const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) -const PFN_vkBindBufferMemory = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) -const PFN_vkBindImageMemory = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) -const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) -const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) -const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) -const PFN_vkQueueBindSparse = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkCreateFence = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyFence = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) -const PFN_vkResetFences = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) -const PFN_vkGetFenceStatus = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) -const PFN_vkWaitForFences = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) -const PFN_vkCreateSemaphore = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySemaphore = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) -const PFN_vkCreateEvent = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyEvent = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) -const PFN_vkGetEventStatus = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) -const PFN_vkSetEvent = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) -const PFN_vkResetEvent = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) -const PFN_vkCreateQueryPool = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyQueryPool = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) -const PFN_vkGetQueryPoolResults = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) -const PFN_vkCreateBuffer = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyBuffer = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) -const PFN_vkCreateBufferView = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyBufferView = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) -const PFN_vkCreateImage = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyImage = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) -const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) -const PFN_vkCreateImageView = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyImageView = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) -const PFN_vkCreateShaderModule = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyShaderModule = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) -const PFN_vkCreatePipelineCache = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPipelineCache = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) -const PFN_vkGetPipelineCacheData = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) -const PFN_vkMergePipelineCaches = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateComputePipelines = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPipeline = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) -const PFN_vkCreatePipelineLayout = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) -const PFN_vkCreateSampler = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySampler = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) -const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) -const PFN_vkCreateDescriptorPool = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) -const PFN_vkResetDescriptorPool = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) -const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) -const PFN_vkFreeDescriptorSets = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) -const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) -const PFN_vkCreateFramebuffer = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyFramebuffer = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyRenderPass = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) -const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) -const PFN_vkCreateCommandPool = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyCommandPool = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) -const PFN_vkResetCommandPool = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) -const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) -const PFN_vkFreeCommandBuffers = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) -const PFN_vkBeginCommandBuffer = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) -const PFN_vkEndCommandBuffer = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) -const PFN_vkResetCommandBuffer = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) -const PFN_vkCmdBindPipeline = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) -const PFN_vkCmdSetViewport = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) -const PFN_vkCmdSetScissor = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) -const PFN_vkCmdSetLineWidth = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) -const PFN_vkCmdSetDepthBias = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) -const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) -const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) -const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) -const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) -const PFN_vkCmdSetStencilReference = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) -const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) -const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) -const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) -const PFN_vkCmdDraw = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) -const PFN_vkCmdDrawIndexed = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawIndirect = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDispatch = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) -const PFN_vkCmdCopyBuffer = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) -const PFN_vkCmdCopyImage = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) -const PFN_vkCmdBlitImage = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) -const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) -const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) -const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) -const PFN_vkCmdFillBuffer = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) -const PFN_vkCmdClearColorImage = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) -const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) -const PFN_vkCmdClearAttachments = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) -const PFN_vkCmdResolveImage = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) -const PFN_vkCmdSetEvent = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) -const PFN_vkCmdResetEvent = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) -const PFN_vkCmdWaitEvents = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) -const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) -const PFN_vkCmdBeginQuery = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdEndQuery = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) -const PFN_vkCmdResetQueryPool = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) -const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) -const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) -const PFN_vkCmdPushConstants = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) -const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) -const PFN_vkCmdNextSubpass = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndRenderPass = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) -const PFN_vkCmdExecuteCommands = Ptr{Cvoid} - -function vkCreateInstance(pCreateInfo, pAllocator, pInstance) - ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) -end - -function vkDestroyInstance(instance, pAllocator) - ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) -end - -function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) - ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) -end - -function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) -end - -function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) -end - -function vkGetInstanceProcAddr(instance, pName) - ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) -end - -function vkGetDeviceProcAddr(device, pName) - ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) -end - -function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) - ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) -end - -function vkDestroyDevice(device, pAllocator) - ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) -end - -function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) - ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) -end - -function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) - ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) -end - -function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) - ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) -end - -function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) - ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) - ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) -end - -function vkQueueSubmit(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) -end - -function vkQueueWaitIdle(queue) - ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) -end - -function vkDeviceWaitIdle(device) - ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) -end - -function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) - ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) -end - -function vkFreeMemory(device, memory, pAllocator) - ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) -end - -function vkMapMemory(device, memory, offset, size, flags, ppData) - ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) -end - -function vkUnmapMemory(device, memory) - ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) -end - -function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) - ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) -end - -function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) - ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) -end - -function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) - ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) -end - -function vkBindBufferMemory(device, buffer, memory, memoryOffset) - ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) -end - -function vkBindImageMemory(device, image, memory, memoryOffset) - ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) -end - -function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) -end - -function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) - ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) -end - -function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) - ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) -end - -function vkCreateFence(device, pCreateInfo, pAllocator, pFence) - ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) -end - -function vkDestroyFence(device, fence, pAllocator) - ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) -end - -function vkResetFences(device, fenceCount, pFences) - ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) -end - -function vkGetFenceStatus(device, fence) - ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) -end - -function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) - ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) -end - -function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) - ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) -end - -function vkDestroySemaphore(device, semaphore, pAllocator) - ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) -end - -function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) - ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) -end - -function vkDestroyEvent(device, event, pAllocator) - ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) -end - -function vkGetEventStatus(device, event) - ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) -end - -function vkSetEvent(device, event) - ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) -end - -function vkResetEvent(device, event) - ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) -end - -function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) - ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) -end - -function vkDestroyQueryPool(device, queryPool, pAllocator) - ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) -end - -function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) - ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) -end - -function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) - ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) -end - -function vkDestroyBuffer(device, buffer, pAllocator) - ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) -end - -function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) - ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) -end - -function vkDestroyBufferView(device, bufferView, pAllocator) - ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) -end - -function vkCreateImage(device, pCreateInfo, pAllocator, pImage) - ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) -end - -function vkDestroyImage(device, image, pAllocator) - ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) -end - -function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) -end - -function vkCreateImageView(device, pCreateInfo, pAllocator, pView) - ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) -end - -function vkDestroyImageView(device, imageView, pAllocator) - ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) -end - -function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) - ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) -end - -function vkDestroyShaderModule(device, shaderModule, pAllocator) - ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) -end - -function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) - ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) -end - -function vkDestroyPipelineCache(device, pipelineCache, pAllocator) - ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) -end - -function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) - ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) -end - -function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) -end - -function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) - ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) - ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkDestroyPipeline(device, pipeline, pAllocator) - ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) -end - -function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) - ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) -end - -function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) - ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) -end - -function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) - ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) -end - -function vkDestroySampler(device, sampler, pAllocator) - ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) -end - -function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) - ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) -end - -function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) - ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) -end - -function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) - ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) -end - -function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) - ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) -end - -function vkResetDescriptorPool(device, descriptorPool, flags) - ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) -end - -function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) - ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) -end - -function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) - ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) -end - -function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) - ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) -end - -function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) - ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) -end - -function vkDestroyFramebuffer(device, framebuffer, pAllocator) - ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) -end - -function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkDestroyRenderPass(device, renderPass, pAllocator) - ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) -end - -function vkGetRenderAreaGranularity(device, renderPass, pGranularity) - ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) -end - -function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) - ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) -end - -function vkDestroyCommandPool(device, commandPool, pAllocator) - ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) -end - -function vkResetCommandPool(device, commandPool, flags) - ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) -end - -function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) - ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) -end - -function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) - ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) -end - -function vkBeginCommandBuffer(commandBuffer, pBeginInfo) - ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) -end - -function vkEndCommandBuffer(commandBuffer) - ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) -end - -function vkResetCommandBuffer(commandBuffer, flags) - ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) -end - -function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) - ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) -end - -function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) - ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) -end - -function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) - ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) -end - -function vkCmdSetLineWidth(commandBuffer, lineWidth) - ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) -end - -function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) - ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) -end - -function vkCmdSetBlendConstants(commandBuffer, blendConstants) - ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) -end - -function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) - ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) -end - -function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) - ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) -end - -function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) - ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) -end - -function vkCmdSetStencilReference(commandBuffer, faceMask, reference) - ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) -end - -function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) - ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) -end - -function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) - ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) -end - -function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) - ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) -end - -function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) - ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) -end - -function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) - ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) -end - -function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end - -function vkCmdDispatchIndirect(commandBuffer, buffer, offset) - ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) -end - -function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) - ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) -end - -function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) - ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) - ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) -end - -function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) - ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) - ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) -end - -function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) - ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) -end - -function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) - ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) -end - -function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) - ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) -end - -function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) - ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) -end - -function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) - ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) -end - -function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) - ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdSetEvent(commandBuffer, event, stageMask) - ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) -end - -function vkCmdResetEvent(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) -end - -function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) - ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) -end - -function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) - ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) -end - -function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) - ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) -end - -function vkCmdEndQuery(commandBuffer, queryPool, query) - ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) -end - -function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) - ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) -end - -function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) - ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) -end - -function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) - ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) -end - -function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) - ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) -end - -function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) - ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) -end - -function vkCmdNextSubpass(commandBuffer, contents) - ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) -end - -function vkCmdEndRenderPass(commandBuffer) - ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) - ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) -end - -const VkSamplerYcbcrConversion_T = Cvoid - -const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} - -const VkDescriptorUpdateTemplate_T = Cvoid - -const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} - -@cenum VkPointClippingBehavior::UInt32 begin - VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0 - VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1 - VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0 - VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1 - VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 2147483647 -end - -@cenum VkTessellationDomainOrigin::UInt32 begin - VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0 - VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1 - VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0 - VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1 - VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 2147483647 -end - -@cenum VkSamplerYcbcrModelConversion::UInt32 begin - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 2147483647 -end - -@cenum VkSamplerYcbcrRange::UInt32 begin - VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0 - VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1 - VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0 - VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1 - VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 2147483647 -end - -@cenum VkChromaLocation::UInt32 begin - VK_CHROMA_LOCATION_COSITED_EVEN = 0 - VK_CHROMA_LOCATION_MIDPOINT = 1 - VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0 - VK_CHROMA_LOCATION_MIDPOINT_KHR = 1 - VK_CHROMA_LOCATION_MAX_ENUM = 2147483647 -end - -@cenum VkDescriptorUpdateTemplateType::UInt32 begin - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0 - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1 - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0 - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 2147483647 -end - -@cenum VkSubgroupFeatureFlagBits::UInt32 begin - VK_SUBGROUP_FEATURE_BASIC_BIT = 1 - VK_SUBGROUP_FEATURE_VOTE_BIT = 2 - VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 4 - VK_SUBGROUP_FEATURE_BALLOT_BIT = 8 - VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 16 - VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 32 - VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 64 - VK_SUBGROUP_FEATURE_QUAD_BIT = 128 - VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 256 - VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkSubgroupFeatureFlags = VkFlags - -@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin - VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 1 - VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 2 - VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 4 - VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 8 - VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 1 - VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 2 - VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 4 - VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 8 - VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkPeerMemoryFeatureFlags = VkFlags - -@cenum VkMemoryAllocateFlagBits::UInt32 begin - VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 - VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 - VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkMemoryAllocateFlags = VkFlags - -const VkCommandPoolTrimFlags = VkFlags - -const VkDescriptorUpdateTemplateCreateFlags = VkFlags - -@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 1 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 8 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 16 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 32 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 64 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 512 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 1024 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 128 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 256 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 8 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 16 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 32 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 64 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkExternalMemoryHandleTypeFlags = VkFlags - -@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin - VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 1 - VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 2 - VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 4 - VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 1 - VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 2 - VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 4 - VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkExternalMemoryFeatureFlags = VkFlags - -@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 - VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 8 - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 - VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 - VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 8 - VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkExternalFenceHandleTypeFlags = VkFlags - -@cenum VkExternalFenceFeatureFlagBits::UInt32 begin - VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 1 - VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 2 - VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 1 - VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 2 - VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkExternalFenceFeatureFlags = VkFlags - -@cenum VkFenceImportFlagBits::UInt32 begin - VK_FENCE_IMPORT_TEMPORARY_BIT = 1 - VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 - VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkFenceImportFlags = VkFlags - -@cenum VkSemaphoreImportFlagBits::UInt32 begin - VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 - VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 - VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkSemaphoreImportFlags = VkFlags - -@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 1 - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 2 - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 4 - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 8 - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 16 - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8 - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 1 - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 2 - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 4 - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 8 - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 16 - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkExternalSemaphoreHandleTypeFlags = VkFlags - -@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin - VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 1 - VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 2 - VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 1 - VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 2 - VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkExternalSemaphoreFeatureFlags = VkFlags - -struct VkPhysicalDeviceSubgroupProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - subgroupSize::UInt32 - supportedStages::VkShaderStageFlags - supportedOperations::VkSubgroupFeatureFlags - quadOperationsInAllStages::VkBool32 -end - -struct VkBindBufferMemoryInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer - memory::VkDeviceMemory - memoryOffset::VkDeviceSize -end - -struct VkBindImageMemoryInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - memory::VkDeviceMemory - memoryOffset::VkDeviceSize -end - -struct VkPhysicalDevice16BitStorageFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffer16BitAccess::VkBool32 - uniformAndStorageBuffer16BitAccess::VkBool32 - storagePushConstant16::VkBool32 - storageInputOutput16::VkBool32 -end - -struct VkMemoryDedicatedRequirements - sType::VkStructureType - pNext::Ptr{Cvoid} - prefersDedicatedAllocation::VkBool32 - requiresDedicatedAllocation::VkBool32 -end - -struct VkMemoryDedicatedAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer -end - -struct VkMemoryAllocateFlagsInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkMemoryAllocateFlags - deviceMask::UInt32 -end - -struct VkDeviceGroupRenderPassBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceMask::UInt32 - deviceRenderAreaCount::UInt32 - pDeviceRenderAreas::Ptr{VkRect2D} -end - -struct VkDeviceGroupCommandBufferBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceMask::UInt32 -end - -struct VkDeviceGroupSubmitInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphoreDeviceIndices::Ptr{UInt32} - commandBufferCount::UInt32 - pCommandBufferDeviceMasks::Ptr{UInt32} - signalSemaphoreCount::UInt32 - pSignalSemaphoreDeviceIndices::Ptr{UInt32} -end - -struct VkDeviceGroupBindSparseInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - resourceDeviceIndex::UInt32 - memoryDeviceIndex::UInt32 -end - -struct VkBindBufferMemoryDeviceGroupInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} -end - -struct VkBindImageMemoryDeviceGroupInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} - splitInstanceBindRegionCount::UInt32 - pSplitInstanceBindRegions::Ptr{VkRect2D} -end - -struct VkPhysicalDeviceGroupProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - physicalDeviceCount::UInt32 - physicalDevices::NTuple{32, VkPhysicalDevice} - subsetAllocation::VkBool32 -end - -struct VkDeviceGroupDeviceCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - physicalDeviceCount::UInt32 - pPhysicalDevices::Ptr{VkPhysicalDevice} -end - -struct VkBufferMemoryRequirementsInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer -end - -struct VkImageMemoryRequirementsInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage -end - -struct VkImageSparseMemoryRequirementsInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage -end - -struct VkMemoryRequirements2 - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryRequirements::VkMemoryRequirements -end - -struct VkSparseImageMemoryRequirements2 - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryRequirements::VkSparseImageMemoryRequirements -end - -struct VkPhysicalDeviceFeatures2 - sType::VkStructureType - pNext::Ptr{Cvoid} - features::VkPhysicalDeviceFeatures -end - -struct VkPhysicalDeviceProperties2 - sType::VkStructureType - pNext::Ptr{Cvoid} - properties::VkPhysicalDeviceProperties -end - -struct VkFormatProperties2 - sType::VkStructureType - pNext::Ptr{Cvoid} - formatProperties::VkFormatProperties -end - -struct VkImageFormatProperties2 - sType::VkStructureType - pNext::Ptr{Cvoid} - imageFormatProperties::VkImageFormatProperties -end - -struct VkPhysicalDeviceImageFormatInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - type::VkImageType - tiling::VkImageTiling - usage::VkImageUsageFlags - flags::VkImageCreateFlags -end - -struct VkQueueFamilyProperties2 - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyProperties::VkQueueFamilyProperties -end - -struct VkPhysicalDeviceMemoryProperties2 - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryProperties::VkPhysicalDeviceMemoryProperties -end - -struct VkSparseImageFormatProperties2 - sType::VkStructureType - pNext::Ptr{Cvoid} - properties::VkSparseImageFormatProperties -end - -struct VkPhysicalDeviceSparseImageFormatInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - type::VkImageType - samples::VkSampleCountFlagBits - usage::VkImageUsageFlags - tiling::VkImageTiling -end - -struct VkPhysicalDevicePointClippingProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - pointClippingBehavior::VkPointClippingBehavior -end - -struct VkInputAttachmentAspectReference - subpass::UInt32 - inputAttachmentIndex::UInt32 - aspectMask::VkImageAspectFlags -end - -struct VkRenderPassInputAttachmentAspectCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - aspectReferenceCount::UInt32 - pAspectReferences::Ptr{VkInputAttachmentAspectReference} -end - -struct VkImageViewUsageCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - usage::VkImageUsageFlags -end - -struct VkPipelineTessellationDomainOriginStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - domainOrigin::VkTessellationDomainOrigin -end - -struct VkRenderPassMultiviewCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassCount::UInt32 - pViewMasks::Ptr{UInt32} - dependencyCount::UInt32 - pViewOffsets::Ptr{Int32} - correlationMaskCount::UInt32 - pCorrelationMasks::Ptr{UInt32} -end - -struct VkPhysicalDeviceMultiviewFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - multiview::VkBool32 - multiviewGeometryShader::VkBool32 - multiviewTessellationShader::VkBool32 -end - -struct VkPhysicalDeviceMultiviewProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - maxMultiviewViewCount::UInt32 - maxMultiviewInstanceIndex::UInt32 -end - -struct VkPhysicalDeviceVariablePointersFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - variablePointersStorageBuffer::VkBool32 - variablePointers::VkBool32 -end - -const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures - -struct VkPhysicalDeviceProtectedMemoryFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - protectedMemory::VkBool32 -end - -struct VkPhysicalDeviceProtectedMemoryProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - protectedNoFault::VkBool32 -end - -struct VkDeviceQueueInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceQueueCreateFlags - queueFamilyIndex::UInt32 - queueIndex::UInt32 -end - -struct VkProtectedSubmitInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - protectedSubmit::VkBool32 -end - -struct VkSamplerYcbcrConversionCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - ycbcrModel::VkSamplerYcbcrModelConversion - ycbcrRange::VkSamplerYcbcrRange - components::VkComponentMapping - xChromaOffset::VkChromaLocation - yChromaOffset::VkChromaLocation - chromaFilter::VkFilter - forceExplicitReconstruction::VkBool32 -end - -struct VkSamplerYcbcrConversionInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - conversion::VkSamplerYcbcrConversion -end - -struct VkBindImagePlaneMemoryInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - planeAspect::VkImageAspectFlagBits -end - -struct VkImagePlaneMemoryRequirementsInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - planeAspect::VkImageAspectFlagBits -end - -struct VkPhysicalDeviceSamplerYcbcrConversionFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - samplerYcbcrConversion::VkBool32 -end - -struct VkSamplerYcbcrConversionImageFormatProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorCount::UInt32 -end - -struct VkDescriptorUpdateTemplateEntry - dstBinding::UInt32 - dstArrayElement::UInt32 - descriptorCount::UInt32 - descriptorType::VkDescriptorType - offset::Csize_t - stride::Csize_t -end - -struct VkDescriptorUpdateTemplateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDescriptorUpdateTemplateCreateFlags - descriptorUpdateEntryCount::UInt32 - pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} - templateType::VkDescriptorUpdateTemplateType - descriptorSetLayout::VkDescriptorSetLayout - pipelineBindPoint::VkPipelineBindPoint - pipelineLayout::VkPipelineLayout - set::UInt32 -end - -struct VkExternalMemoryProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlags - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags - compatibleHandleTypes::VkExternalMemoryHandleTypeFlags -end - -struct VkPhysicalDeviceExternalImageFormatInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits -end - -struct VkExternalImageFormatProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - externalMemoryProperties::VkExternalMemoryProperties -end - -struct VkPhysicalDeviceExternalBufferInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkBufferCreateFlags - usage::VkBufferUsageFlags - handleType::VkExternalMemoryHandleTypeFlagBits -end - -struct VkExternalBufferProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - externalMemoryProperties::VkExternalMemoryProperties -end - -struct VkPhysicalDeviceIDProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceUUID::NTuple{16, UInt8} - driverUUID::NTuple{16, UInt8} - deviceLUID::NTuple{8, UInt8} - deviceNodeMask::UInt32 - deviceLUIDValid::VkBool32 -end - -struct VkExternalMemoryImageCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlags -end - -struct VkExternalMemoryBufferCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlags -end - -struct VkExportMemoryAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlags -end - -struct VkPhysicalDeviceExternalFenceInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalFenceHandleTypeFlagBits -end - -struct VkExternalFenceProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags - compatibleHandleTypes::VkExternalFenceHandleTypeFlags - externalFenceFeatures::VkExternalFenceFeatureFlags -end - -struct VkExportFenceCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalFenceHandleTypeFlags -end - -struct VkExportSemaphoreCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalSemaphoreHandleTypeFlags -end - -struct VkPhysicalDeviceExternalSemaphoreInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalSemaphoreHandleTypeFlagBits -end - -struct VkExternalSemaphoreProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags - compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags - externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags -end - -struct VkPhysicalDeviceMaintenance3Properties - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPerSetDescriptors::UInt32 - maxMemoryAllocationSize::VkDeviceSize -end - -struct VkDescriptorSetLayoutSupport - sType::VkStructureType - pNext::Ptr{Cvoid} - supported::VkBool32 -end - -struct VkPhysicalDeviceShaderDrawParametersFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderDrawParameters::VkBool32 -end - -const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) -const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) -const PFN_vkBindBufferMemory2 = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) -const PFN_vkBindImageMemory2 = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) -const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) -const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDispatchBase = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) -const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) -const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) -const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) -const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) -const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) -const PFN_vkTrimCommandPool = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) -const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) -const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) -const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) -const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) -const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) -const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) -const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) -const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} - -function vkEnumerateInstanceVersion(pApiVersion) - ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) -end - -function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) - ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkBindImageMemory2(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) - ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) -end - -function vkCmdSetDeviceMask(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) -end - -function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) -end - -function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) -end - -function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) - ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end - -function vkTrimCommandPool(device, commandPool, flags) - ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) -end - -function vkGetDeviceQueue2(device, pQueueInfo, pQueue) - ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) -end - -function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) -end - -function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) -end - -function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) -end - -function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) -end - -function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) -end - -function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) -end - -function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) - ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) -end - -function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) - ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) -end - -function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) - ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) -end - -@cenum VkDriverId::UInt32 begin - VK_DRIVER_ID_AMD_PROPRIETARY = 1 - VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 - VK_DRIVER_ID_MESA_RADV = 3 - VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 - VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 - VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 - VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 - VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 - VK_DRIVER_ID_ARM_PROPRIETARY = 9 - VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 - VK_DRIVER_ID_GGP_PROPRIETARY = 11 - VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 - VK_DRIVER_ID_MESA_LLVMPIPE = 13 - VK_DRIVER_ID_MOLTENVK = 14 - VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 - VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 - VK_DRIVER_ID_MESA_RADV_KHR = 3 - VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 - VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 - VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 - VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 - VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 - VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 - VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 - VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 - VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 - VK_DRIVER_ID_MAX_ENUM = 2147483647 -end - -@cenum VkShaderFloatControlsIndependence::UInt32 begin - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 -end - -@cenum VkSamplerReductionMode::UInt32 begin - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 - VK_SAMPLER_REDUCTION_MODE_MIN = 1 - VK_SAMPLER_REDUCTION_MODE_MAX = 2 - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0 - VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1 - VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2 - VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 2147483647 -end - -@cenum VkSemaphoreType::UInt32 begin - VK_SEMAPHORE_TYPE_BINARY = 0 - VK_SEMAPHORE_TYPE_TIMELINE = 1 - VK_SEMAPHORE_TYPE_BINARY_KHR = 0 - VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 - VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 -end - -@cenum VkResolveModeFlagBits::UInt32 begin - VK_RESOLVE_MODE_NONE = 0 - VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 - VK_RESOLVE_MODE_AVERAGE_BIT = 2 - VK_RESOLVE_MODE_MIN_BIT = 4 - VK_RESOLVE_MODE_MAX_BIT = 8 - VK_RESOLVE_MODE_NONE_KHR = 0 - VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 - VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 - VK_RESOLVE_MODE_MIN_BIT_KHR = 4 - VK_RESOLVE_MODE_MAX_BIT_KHR = 8 - VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkResolveModeFlags = VkFlags - -@cenum VkDescriptorBindingFlagBits::UInt32 begin - VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 - VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 - VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 - VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 - VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 1 - VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 2 - VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 4 - VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 8 - VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkDescriptorBindingFlags = VkFlags - -@cenum VkSemaphoreWaitFlagBits::UInt32 begin - VK_SEMAPHORE_WAIT_ANY_BIT = 1 - VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 - VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 -end - -const VkSemaphoreWaitFlags = VkFlags - -struct VkPhysicalDeviceVulkan11Features - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffer16BitAccess::VkBool32 - uniformAndStorageBuffer16BitAccess::VkBool32 - storagePushConstant16::VkBool32 - storageInputOutput16::VkBool32 - multiview::VkBool32 - multiviewGeometryShader::VkBool32 - multiviewTessellationShader::VkBool32 - variablePointersStorageBuffer::VkBool32 - variablePointers::VkBool32 - protectedMemory::VkBool32 - samplerYcbcrConversion::VkBool32 - shaderDrawParameters::VkBool32 -end - -struct VkPhysicalDeviceVulkan11Properties - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceUUID::NTuple{16, UInt8} - driverUUID::NTuple{16, UInt8} - deviceLUID::NTuple{8, UInt8} - deviceNodeMask::UInt32 - deviceLUIDValid::VkBool32 - subgroupSize::UInt32 - subgroupSupportedStages::VkShaderStageFlags - subgroupSupportedOperations::VkSubgroupFeatureFlags - subgroupQuadOperationsInAllStages::VkBool32 - pointClippingBehavior::VkPointClippingBehavior - maxMultiviewViewCount::UInt32 - maxMultiviewInstanceIndex::UInt32 - protectedNoFault::VkBool32 - maxPerSetDescriptors::UInt32 - maxMemoryAllocationSize::VkDeviceSize -end - -struct VkPhysicalDeviceVulkan12Features - sType::VkStructureType - pNext::Ptr{Cvoid} - samplerMirrorClampToEdge::VkBool32 - drawIndirectCount::VkBool32 - storageBuffer8BitAccess::VkBool32 - uniformAndStorageBuffer8BitAccess::VkBool32 - storagePushConstant8::VkBool32 - shaderBufferInt64Atomics::VkBool32 - shaderSharedInt64Atomics::VkBool32 - shaderFloat16::VkBool32 - shaderInt8::VkBool32 - descriptorIndexing::VkBool32 - shaderInputAttachmentArrayDynamicIndexing::VkBool32 - shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 - shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 - shaderUniformBufferArrayNonUniformIndexing::VkBool32 - shaderSampledImageArrayNonUniformIndexing::VkBool32 - shaderStorageBufferArrayNonUniformIndexing::VkBool32 - shaderStorageImageArrayNonUniformIndexing::VkBool32 - shaderInputAttachmentArrayNonUniformIndexing::VkBool32 - shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 - shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 - descriptorBindingUniformBufferUpdateAfterBind::VkBool32 - descriptorBindingSampledImageUpdateAfterBind::VkBool32 - descriptorBindingStorageImageUpdateAfterBind::VkBool32 - descriptorBindingStorageBufferUpdateAfterBind::VkBool32 - descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingUpdateUnusedWhilePending::VkBool32 - descriptorBindingPartiallyBound::VkBool32 - descriptorBindingVariableDescriptorCount::VkBool32 - runtimeDescriptorArray::VkBool32 - samplerFilterMinmax::VkBool32 - scalarBlockLayout::VkBool32 - imagelessFramebuffer::VkBool32 - uniformBufferStandardLayout::VkBool32 - shaderSubgroupExtendedTypes::VkBool32 - separateDepthStencilLayouts::VkBool32 - hostQueryReset::VkBool32 - timelineSemaphore::VkBool32 - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 - vulkanMemoryModel::VkBool32 - vulkanMemoryModelDeviceScope::VkBool32 - vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 - shaderOutputViewportIndex::VkBool32 - shaderOutputLayer::VkBool32 - subgroupBroadcastDynamicId::VkBool32 -end - -struct VkConformanceVersion - major::UInt8 - minor::UInt8 - subminor::UInt8 - patch::UInt8 -end - -struct VkPhysicalDeviceVulkan12Properties - sType::VkStructureType - pNext::Ptr{Cvoid} - driverID::VkDriverId - driverName::NTuple{256, Cchar} - driverInfo::NTuple{256, Cchar} - conformanceVersion::VkConformanceVersion - denormBehaviorIndependence::VkShaderFloatControlsIndependence - roundingModeIndependence::VkShaderFloatControlsIndependence - shaderSignedZeroInfNanPreserveFloat16::VkBool32 - shaderSignedZeroInfNanPreserveFloat32::VkBool32 - shaderSignedZeroInfNanPreserveFloat64::VkBool32 - shaderDenormPreserveFloat16::VkBool32 - shaderDenormPreserveFloat32::VkBool32 - shaderDenormPreserveFloat64::VkBool32 - shaderDenormFlushToZeroFloat16::VkBool32 - shaderDenormFlushToZeroFloat32::VkBool32 - shaderDenormFlushToZeroFloat64::VkBool32 - shaderRoundingModeRTEFloat16::VkBool32 - shaderRoundingModeRTEFloat32::VkBool32 - shaderRoundingModeRTEFloat64::VkBool32 - shaderRoundingModeRTZFloat16::VkBool32 - shaderRoundingModeRTZFloat32::VkBool32 - shaderRoundingModeRTZFloat64::VkBool32 - maxUpdateAfterBindDescriptorsInAllPools::UInt32 - shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 - shaderSampledImageArrayNonUniformIndexingNative::VkBool32 - shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 - shaderStorageImageArrayNonUniformIndexingNative::VkBool32 - shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 - robustBufferAccessUpdateAfterBind::VkBool32 - quadDivergentImplicitLod::VkBool32 - maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 - maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 - maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 - maxPerStageUpdateAfterBindResources::UInt32 - maxDescriptorSetUpdateAfterBindSamplers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindSampledImages::UInt32 - maxDescriptorSetUpdateAfterBindStorageImages::UInt32 - maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 - supportedDepthResolveModes::VkResolveModeFlags - supportedStencilResolveModes::VkResolveModeFlags - independentResolveNone::VkBool32 - independentResolve::VkBool32 - filterMinmaxSingleComponentFormats::VkBool32 - filterMinmaxImageComponentMapping::VkBool32 - maxTimelineSemaphoreValueDifference::UInt64 - framebufferIntegerColorSampleCounts::VkSampleCountFlags -end - -struct VkImageFormatListCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - viewFormatCount::UInt32 - pViewFormats::Ptr{VkFormat} -end - -struct VkAttachmentDescription2 - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkAttachmentDescriptionFlags - format::VkFormat - samples::VkSampleCountFlagBits - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - stencilLoadOp::VkAttachmentLoadOp - stencilStoreOp::VkAttachmentStoreOp - initialLayout::VkImageLayout - finalLayout::VkImageLayout -end - -struct VkAttachmentReference2 - sType::VkStructureType - pNext::Ptr{Cvoid} - attachment::UInt32 - layout::VkImageLayout - aspectMask::VkImageAspectFlags -end - -struct VkSubpassDescription2 - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkSubpassDescriptionFlags - pipelineBindPoint::VkPipelineBindPoint - viewMask::UInt32 - inputAttachmentCount::UInt32 - pInputAttachments::Ptr{VkAttachmentReference2} - colorAttachmentCount::UInt32 - pColorAttachments::Ptr{VkAttachmentReference2} - pResolveAttachments::Ptr{VkAttachmentReference2} - pDepthStencilAttachment::Ptr{VkAttachmentReference2} - preserveAttachmentCount::UInt32 - pPreserveAttachments::Ptr{UInt32} -end - -struct VkSubpassDependency2 - sType::VkStructureType - pNext::Ptr{Cvoid} - srcSubpass::UInt32 - dstSubpass::UInt32 - srcStageMask::VkPipelineStageFlags - dstStageMask::VkPipelineStageFlags - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags - dependencyFlags::VkDependencyFlags - viewOffset::Int32 -end - -struct VkRenderPassCreateInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkRenderPassCreateFlags - attachmentCount::UInt32 - pAttachments::Ptr{VkAttachmentDescription2} - subpassCount::UInt32 - pSubpasses::Ptr{VkSubpassDescription2} - dependencyCount::UInt32 - pDependencies::Ptr{VkSubpassDependency2} - correlatedViewMaskCount::UInt32 - pCorrelatedViewMasks::Ptr{UInt32} -end - -struct VkSubpassBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - contents::VkSubpassContents -end - -struct VkSubpassEndInfo - sType::VkStructureType - pNext::Ptr{Cvoid} -end - -struct VkPhysicalDevice8BitStorageFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - storageBuffer8BitAccess::VkBool32 - uniformAndStorageBuffer8BitAccess::VkBool32 - storagePushConstant8::VkBool32 -end - -struct VkPhysicalDeviceDriverProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - driverID::VkDriverId - driverName::NTuple{256, Cchar} - driverInfo::NTuple{256, Cchar} - conformanceVersion::VkConformanceVersion -end - -struct VkPhysicalDeviceShaderAtomicInt64Features - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderBufferInt64Atomics::VkBool32 - shaderSharedInt64Atomics::VkBool32 -end - -struct VkPhysicalDeviceShaderFloat16Int8Features - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderFloat16::VkBool32 - shaderInt8::VkBool32 -end - -struct VkPhysicalDeviceFloatControlsProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - denormBehaviorIndependence::VkShaderFloatControlsIndependence - roundingModeIndependence::VkShaderFloatControlsIndependence - shaderSignedZeroInfNanPreserveFloat16::VkBool32 - shaderSignedZeroInfNanPreserveFloat32::VkBool32 - shaderSignedZeroInfNanPreserveFloat64::VkBool32 - shaderDenormPreserveFloat16::VkBool32 - shaderDenormPreserveFloat32::VkBool32 - shaderDenormPreserveFloat64::VkBool32 - shaderDenormFlushToZeroFloat16::VkBool32 - shaderDenormFlushToZeroFloat32::VkBool32 - shaderDenormFlushToZeroFloat64::VkBool32 - shaderRoundingModeRTEFloat16::VkBool32 - shaderRoundingModeRTEFloat32::VkBool32 - shaderRoundingModeRTEFloat64::VkBool32 - shaderRoundingModeRTZFloat16::VkBool32 - shaderRoundingModeRTZFloat32::VkBool32 - shaderRoundingModeRTZFloat64::VkBool32 -end - -struct VkDescriptorSetLayoutBindingFlagsCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - bindingCount::UInt32 - pBindingFlags::Ptr{VkDescriptorBindingFlags} -end - -struct VkPhysicalDeviceDescriptorIndexingFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderInputAttachmentArrayDynamicIndexing::VkBool32 - shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 - shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 - shaderUniformBufferArrayNonUniformIndexing::VkBool32 - shaderSampledImageArrayNonUniformIndexing::VkBool32 - shaderStorageBufferArrayNonUniformIndexing::VkBool32 - shaderStorageImageArrayNonUniformIndexing::VkBool32 - shaderInputAttachmentArrayNonUniformIndexing::VkBool32 - shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 - shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 - descriptorBindingUniformBufferUpdateAfterBind::VkBool32 - descriptorBindingSampledImageUpdateAfterBind::VkBool32 - descriptorBindingStorageImageUpdateAfterBind::VkBool32 - descriptorBindingStorageBufferUpdateAfterBind::VkBool32 - descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingUpdateUnusedWhilePending::VkBool32 - descriptorBindingPartiallyBound::VkBool32 - descriptorBindingVariableDescriptorCount::VkBool32 - runtimeDescriptorArray::VkBool32 -end - -struct VkPhysicalDeviceDescriptorIndexingProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - maxUpdateAfterBindDescriptorsInAllPools::UInt32 - shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 - shaderSampledImageArrayNonUniformIndexingNative::VkBool32 - shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 - shaderStorageImageArrayNonUniformIndexingNative::VkBool32 - shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 - robustBufferAccessUpdateAfterBind::VkBool32 - quadDivergentImplicitLod::VkBool32 - maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 - maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 - maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 - maxPerStageUpdateAfterBindResources::UInt32 - maxDescriptorSetUpdateAfterBindSamplers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindSampledImages::UInt32 - maxDescriptorSetUpdateAfterBindStorageImages::UInt32 - maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 -end - -struct VkDescriptorSetVariableDescriptorCountAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetCount::UInt32 - pDescriptorCounts::Ptr{UInt32} -end - -struct VkDescriptorSetVariableDescriptorCountLayoutSupport - sType::VkStructureType - pNext::Ptr{Cvoid} - maxVariableDescriptorCount::UInt32 -end - -struct VkSubpassDescriptionDepthStencilResolve - sType::VkStructureType - pNext::Ptr{Cvoid} - depthResolveMode::VkResolveModeFlagBits - stencilResolveMode::VkResolveModeFlagBits - pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} -end - -struct VkPhysicalDeviceDepthStencilResolveProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedDepthResolveModes::VkResolveModeFlags - supportedStencilResolveModes::VkResolveModeFlags - independentResolveNone::VkBool32 - independentResolve::VkBool32 -end - -struct VkPhysicalDeviceScalarBlockLayoutFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - scalarBlockLayout::VkBool32 -end - -struct VkImageStencilUsageCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - stencilUsage::VkImageUsageFlags -end - -struct VkSamplerReductionModeCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - reductionMode::VkSamplerReductionMode -end - -struct VkPhysicalDeviceSamplerFilterMinmaxProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - filterMinmaxSingleComponentFormats::VkBool32 - filterMinmaxImageComponentMapping::VkBool32 -end - -struct VkPhysicalDeviceVulkanMemoryModelFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - vulkanMemoryModel::VkBool32 - vulkanMemoryModelDeviceScope::VkBool32 - vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 -end - -struct VkPhysicalDeviceImagelessFramebufferFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - imagelessFramebuffer::VkBool32 -end - -struct VkFramebufferAttachmentImageInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkImageCreateFlags - usage::VkImageUsageFlags - width::UInt32 - height::UInt32 - layerCount::UInt32 - viewFormatCount::UInt32 - pViewFormats::Ptr{VkFormat} -end - -struct VkFramebufferAttachmentsCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentImageInfoCount::UInt32 - pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} -end - -struct VkRenderPassAttachmentBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pAttachments::Ptr{VkImageView} -end - -struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - uniformBufferStandardLayout::VkBool32 -end - -struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSubgroupExtendedTypes::VkBool32 -end - -struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - separateDepthStencilLayouts::VkBool32 -end - -struct VkAttachmentReferenceStencilLayout - sType::VkStructureType - pNext::Ptr{Cvoid} - stencilLayout::VkImageLayout -end - -struct VkAttachmentDescriptionStencilLayout - sType::VkStructureType - pNext::Ptr{Cvoid} - stencilInitialLayout::VkImageLayout - stencilFinalLayout::VkImageLayout -end - -struct VkPhysicalDeviceHostQueryResetFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - hostQueryReset::VkBool32 -end - -struct VkPhysicalDeviceTimelineSemaphoreFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - timelineSemaphore::VkBool32 -end - -struct VkPhysicalDeviceTimelineSemaphoreProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTimelineSemaphoreValueDifference::UInt64 -end - -struct VkSemaphoreTypeCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphoreType::VkSemaphoreType - initialValue::UInt64 -end - -struct VkTimelineSemaphoreSubmitInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreValueCount::UInt32 - pWaitSemaphoreValues::Ptr{UInt64} - signalSemaphoreValueCount::UInt32 - pSignalSemaphoreValues::Ptr{UInt64} -end - -struct VkSemaphoreWaitInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkSemaphoreWaitFlags - semaphoreCount::UInt32 - pSemaphores::Ptr{VkSemaphore} - pValues::Ptr{UInt64} -end - -struct VkSemaphoreSignalInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - value::UInt64 -end - -struct VkPhysicalDeviceBufferDeviceAddressFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 -end - -struct VkBufferDeviceAddressInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer -end - -struct VkBufferOpaqueCaptureAddressCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - opaqueCaptureAddress::UInt64 -end - -struct VkMemoryOpaqueCaptureAddressAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - opaqueCaptureAddress::UInt64 -end - -struct VkDeviceMemoryOpaqueCaptureAddressInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass2 = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) -const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) -const PFN_vkResetQueryPool = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) -const PFN_vkWaitSemaphores = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphore = Ptr{Cvoid} - -# C code: -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} - -# C code: -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} - -# C code: -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) -const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} - -function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end - -function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) -end - -function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) -end - -function vkResetQueryPool(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) -end - -function vkGetSemaphoreCounterValue(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end - -function vkWaitSemaphores(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end - -function vkSignalSemaphore(device, pSignalInfo) - ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) -end - -function vkGetBufferDeviceAddress(device, pInfo) - ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetBufferOpaqueCaptureAddress(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end - -const VkSurfaceKHR_T = Cvoid - -const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} - -@cenum VkPresentModeKHR::UInt32 begin - VK_PRESENT_MODE_IMMEDIATE_KHR = 0 - VK_PRESENT_MODE_MAILBOX_KHR = 1 - VK_PRESENT_MODE_FIFO_KHR = 2 - VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3 - VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000 - VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001 - VK_PRESENT_MODE_MAX_ENUM_KHR = 2147483647 -end - -@cenum VkColorSpaceKHR::UInt32 begin - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0 - VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001 - VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002 - VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003 - VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004 - VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005 - VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006 - VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007 - VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008 - VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009 - VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010 - VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011 - VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012 - VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013 - VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014 - VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000 - VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 - VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 - VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 -end - -@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin - VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 1 - VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 2 - VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 4 - VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 8 - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 16 - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 32 - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 64 - VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 128 - VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 256 - VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end - -@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin - VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 1 - VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 2 - VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 4 - VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 8 - VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end - -const VkCompositeAlphaFlagsKHR = VkFlags - -const VkSurfaceTransformFlagsKHR = VkFlags - -struct VkSurfaceCapabilitiesKHR - minImageCount::UInt32 - maxImageCount::UInt32 - currentExtent::VkExtent2D - minImageExtent::VkExtent2D - maxImageExtent::VkExtent2D - maxImageArrayLayers::UInt32 - supportedTransforms::VkSurfaceTransformFlagsKHR - currentTransform::VkSurfaceTransformFlagBitsKHR - supportedCompositeAlpha::VkCompositeAlphaFlagsKHR - supportedUsageFlags::VkImageUsageFlags -end - -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) -const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} - -function vkDestroySurfaceKHR(instance, surface, pAllocator) - ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end - -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) -end - -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) -end - -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) -end - -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) -end - -const VkSwapchainKHR_T = Cvoid - -const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} - -@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin - VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 - VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 - VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end - -const VkSwapchainCreateFlagsKHR = VkFlags - -@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin - VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 1 - VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 2 - VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 4 - VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 8 - VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end - -const VkDeviceGroupPresentModeFlagsKHR = VkFlags - -struct VkSwapchainCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkSwapchainCreateFlagsKHR - surface::VkSurfaceKHR - minImageCount::UInt32 - imageFormat::VkFormat - imageColorSpace::VkColorSpaceKHR - imageExtent::VkExtent2D - imageArrayLayers::UInt32 - imageUsage::VkImageUsageFlags - imageSharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} - preTransform::VkSurfaceTransformFlagBitsKHR - compositeAlpha::VkCompositeAlphaFlagBitsKHR - presentMode::VkPresentModeKHR - clipped::VkBool32 - oldSwapchain::VkSwapchainKHR -end - -struct VkPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} -end - -struct VkImageSwapchainCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR -end - -struct VkBindImageMemorySwapchainInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 -end - -struct VkAcquireNextImageInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 -end - -struct VkDeviceGroupPresentCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR -end - -struct VkDeviceGroupPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR -end - -struct VkDeviceGroupSwapchainCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) -const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) -const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) -const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) -const PFN_vkQueuePresentKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) -const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) -const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) -const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) -const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} - -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) - ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) -end - -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) -end - -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) -end - -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) - ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) -end - -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) -end - -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) -end - -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) -end - -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) -end - -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) -end - -const VkDisplayKHR_T = Cvoid - -const VkDisplayKHR = Ptr{VkDisplayKHR_T} - -const VkDisplayModeKHR_T = Cvoid - -const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} - -const VkDisplayModeCreateFlagsKHR = VkFlags - -@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin - VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 1 - VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 2 - VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 4 - VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 8 - VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end - -const VkDisplayPlaneAlphaFlagsKHR = VkFlags - -const VkDisplaySurfaceCreateFlagsKHR = VkFlags - -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 -end - -struct VkDisplayModeCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR -end - -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR -end - -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D -end - -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 -end - -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Ptr{Cchar} - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 -end - -struct VkDisplaySurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) -const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) -const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) -end - -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) -end - -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) - ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) -end - -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) -end - -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) -const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} - -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) - ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) -end - -const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo - -const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures - -const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties - -const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 - -const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 - -const VkFormatProperties2KHR = VkFormatProperties2 - -const VkImageFormatProperties2KHR = VkImageFormatProperties2 - -const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 - -const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 - -const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 - -const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 - -const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) -const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) -const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) -const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) -const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) -const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end - -const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags - -const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits - -const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags - -const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits - -const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo - -const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo - -const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo - -const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo - -const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo - -const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo - -const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) -const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) -const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) -const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} - -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) - ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) -end - -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) -end - -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) -end - -const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) -const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} - -function vkTrimCommandPoolKHR(device, commandPool, flags) - ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) -end - -const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties - -const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) -const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} - -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) -end - -const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags - -const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits - -const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags - -const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits - -const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties - -const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo - -const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties - -const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo - -const VkExternalBufferPropertiesKHR = VkExternalBufferProperties - -const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) -const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) -end - -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo - -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo - -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo - -struct VkImportMemoryFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint -end - -struct VkMemoryFdPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 -end - -struct VkMemoryGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) -const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} - -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) -end - -const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags - -const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits - -const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags - -const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits - -const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo - -const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) -const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) - ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) -end - -const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags - -const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits - -const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo - -struct VkImportSemaphoreFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - fd::Cint -end - -struct VkSemaphoreGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) -const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} - -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) - ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) -end - -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -struct VkPhysicalDevicePushDescriptorPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) -const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) -const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} - -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) - ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) -end - -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) -end - -const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features - -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features - -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures - -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 -end - -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} -end - -struct VkPresentRegionsKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} -end - -const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate - -const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType - -const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags - -const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry - -const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) -const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) -const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} - -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) -end - -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) -end - -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) -end - -const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures - -const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo - -const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo - -const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo - -const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 - -const VkAttachmentDescription2KHR = VkAttachmentDescription2 - -const VkAttachmentReference2KHR = VkAttachmentReference2 - -const VkSubpassDescription2KHR = VkSubpassDescription2 - -const VkSubpassDependency2KHR = VkSubpassDependency2 - -const VkSubpassBeginInfoKHR = VkSubpassBeginInfo - -const VkSubpassEndInfoKHR = VkSubpassEndInfo - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) -const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) -const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) -const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} - -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end - -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) -end - -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) -end - -struct VkSharedPresentSurfaceCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} - -function vkGetSwapchainStatusKHR(device, swapchain) - ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags - -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits - -const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags - -const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits - -const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo - -const VkExternalFencePropertiesKHR = VkExternalFenceProperties - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) -const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) - ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) -end - -const VkFenceImportFlagsKHR = VkFenceImportFlags - -const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits - -const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo - -struct VkImportFenceFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - fd::Cint -end - -struct VkFenceGetFdInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) -const PFN_vkImportFenceFdKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) -const PFN_vkGetFenceFdKHR = Ptr{Cvoid} - -function vkImportFenceFdKHR(device, pImportFenceFdInfo) - ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) -end - -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -@cenum VkPerformanceCounterUnitKHR::UInt32 begin - VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 - VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 - VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 - VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 - VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 - VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 - VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 - VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 - VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 - VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 - VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 - VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 -end - -@cenum VkPerformanceCounterScopeKHR::UInt32 begin - VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 - VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 - VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 - VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 - VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 - VK_QUERY_SCOPE_COMMAND_KHR = 2 - VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 -end - -@cenum VkPerformanceCounterStorageKHR::UInt32 begin - VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 - VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 - VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 - VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 - VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 - VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 - VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 -end - -@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin - VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 - VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 - VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end - -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags - -@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end - -const VkAcquireProfilingLockFlagsKHR = VkFlags - -struct VkPhysicalDevicePerformanceQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 -end - -struct VkPhysicalDevicePerformanceQueryPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 -end - -struct VkPerformanceCounterKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} -end - -struct VkPerformanceCounterDescriptionKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, Cchar} - category::NTuple{256, Cchar} - description::NTuple{256, Cchar} -end - -struct VkQueryPoolPerformanceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - counterIndexCount::UInt32 - pCounterIndices::Ptr{UInt32} -end - -struct VkPerformanceCounterResultKHR - data::NTuple{8, UInt8} -end - -function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) - f === :int32 && return Ptr{Int32}(x + 0) - f === :int64 && return Ptr{Int64}(x + 0) - f === :uint32 && return Ptr{UInt32}(x + 0) - f === :uint64 && return Ptr{UInt64}(x + 0) - f === :float32 && return Ptr{Cfloat}(x + 0) - f === :float64 && return Ptr{Cdouble}(x + 0) - return getfield(x, f) -end - -function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) - r = Ref{VkPerformanceCounterResultKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) - GC.@preserve r unsafe_load(getproperty(ptr, f)) -end - -function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end - -struct VkAcquireProfilingLockInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 -end - -struct VkPerformanceQuerySubmitInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - counterPassIndex::UInt32 -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) -const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) -const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) -const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) -const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} - -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) - ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) -end - -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) -end - -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) -end - -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) -end - -const VkPointClippingBehaviorKHR = VkPointClippingBehavior - -const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin - -const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties - -const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo - -const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference - -const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo - -const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo - -struct VkPhysicalDeviceSurfaceInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surface::VkSurfaceKHR -end - -struct VkSurfaceCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR -end - -struct VkSurfaceFormat2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) -const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) -end - -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) -end - -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -struct VkDisplayProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR -end - -struct VkDisplayPlaneProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR -end - -struct VkDisplayModeProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR -end - -struct VkDisplayPlaneInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 -end - -struct VkDisplayPlaneCapabilities2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) -const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) -const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) -const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} - -function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) -end - -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) -end - -const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements - -const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo - -const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 - -const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 - -const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 - -const VkMemoryRequirements2KHR = VkMemoryRequirements2 - -const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) -const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} - -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo - -const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion - -const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion - -const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange - -const VkChromaLocationKHR = VkChromaLocation - -const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo - -const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo - -const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo - -const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo - -const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures - -const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) -const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} - -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) -end - -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) -end - -const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo - -const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) -const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) -const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} - -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties - -const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) -const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} - -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) - ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} - -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures - -const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures - -const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features - -struct VkPhysicalDeviceShaderClockFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSubgroupClock::VkBool32 - shaderDeviceClock::VkBool32 -end - -const VkDriverIdKHR = VkDriverId - -const VkConformanceVersionKHR = VkConformanceVersion - -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties - -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence - -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties - -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits - -const VkResolveModeFlagsKHR = VkResolveModeFlags - -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve - -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties - -const VkSemaphoreTypeKHR = VkSemaphoreType - -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits - -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags - -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures - -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties - -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo - -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo - -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo - -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) -const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} - -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end - -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end - -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) -end - -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures - -struct VkSurfaceProtectedCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsProtected::VkBool32 -end - -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures - -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout - -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout - -const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures - -const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures - -const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo - -const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo - -const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo - -const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo - -# C code: -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} - -# C code: -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} - -# C code: -# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) -const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} - -function vkGetBufferDeviceAddressKHR(device, pInfo) - ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end - -@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 -end - -struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 -end - -struct VkPipelineInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline -end - -struct VkPipelineExecutablePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - subgroupSize::UInt32 -end - -struct VkPipelineExecutableInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipeline::VkPipeline - executableIndex::UInt32 -end - -struct VkPipelineExecutableStatisticValueKHR - data::NTuple{8, UInt8} -end - -function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) - f === :b32 && return Ptr{VkBool32}(x + 0) - f === :i64 && return Ptr{Int64}(x + 0) - f === :u64 && return Ptr{UInt64}(x + 0) - f === :f64 && return Ptr{Cdouble}(x + 0) - return getfield(x, f) -end - -function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) - r = Ref{VkPipelineExecutableStatisticValueKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) - GC.@preserve r unsafe_load(getproperty(ptr, f)) -end - -function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end - -struct VkPipelineExecutableStatisticKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR -end - -struct VkPipelineExecutableInternalRepresentationKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - description::NTuple{256, Cchar} - isText::VkBool32 - dataSize::Csize_t - pData::Ptr{Cvoid} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) -const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) -const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) -const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} - -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end - -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end - -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end - -const VkDebugReportCallbackEXT_T = Cvoid - -const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} - -@cenum VkDebugReportObjectTypeEXT::UInt32 begin - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0 - VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1 - VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2 - VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3 - VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4 - VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5 - VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6 - VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7 - VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8 - VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9 - VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10 - VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11 - VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12 - VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13 - VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14 - VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15 - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16 - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17 - VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18 - VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19 - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20 - VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21 - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22 - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23 - VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24 - VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25 - VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26 - VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27 - VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28 - VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29 - VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30 - VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33 - VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000 - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000 - VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 - VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 - VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000 - VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000 - VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 - VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkDebugReportFlagBitsEXT::UInt32 begin - VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 1 - VK_DEBUG_REPORT_WARNING_BIT_EXT = 2 - VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 4 - VK_DEBUG_REPORT_ERROR_BIT_EXT = 8 - VK_DEBUG_REPORT_DEBUG_BIT_EXT = 16 - VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end - -const VkDebugReportFlagsEXT = VkFlags - -# C code: -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) -const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} - -struct VkDebugReportCallbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDebugReportFlagsEXT - pfnCallback::PFN_vkDebugReportCallbackEXT - pUserData::Ptr{Cvoid} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) -const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) -const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} - -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) - ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) -end - -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) -end - -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) - ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) -end - -@cenum VkRasterizationOrderAMD::UInt32 begin - VK_RASTERIZATION_ORDER_STRICT_AMD = 0 - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 -end - -struct VkPipelineRasterizationStateRasterizationOrderAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD -end - -struct VkDebugMarkerObjectNameInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Ptr{Cchar} -end - -struct VkDebugMarkerObjectTagInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} -end - -struct VkDebugMarkerMarkerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pMarkerName::Ptr{Cchar} - color::NTuple{4, Cfloat} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) -const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) -const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) -const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} - -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end - -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) -end - -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end - -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end - -struct VkDedicatedAllocationImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 -end - -struct VkDedicatedAllocationBufferCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 -end - -struct VkDedicatedAllocationMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer -end - -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 -end - -struct VkPhysicalDeviceTransformFeedbackPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTransformFeedbackStreams::UInt32 - maxTransformFeedbackBuffers::UInt32 - maxTransformFeedbackBufferSize::VkDeviceSize - maxTransformFeedbackStreamDataSize::UInt32 - maxTransformFeedbackBufferDataSize::UInt32 - maxTransformFeedbackBufferDataStride::UInt32 - transformFeedbackQueries::VkBool32 - transformFeedbackStreamsLinesTriangles::VkBool32 - transformFeedbackRasterizationStreamSelect::VkBool32 - transformFeedbackDraw::VkBool32 -end - -struct VkPipelineRasterizationStateStreamCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) -const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) -const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) -const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) -const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) -const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) -const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} - -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) - ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) -end - -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end - -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end - -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) -end - -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) -end - -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) - ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) -end - -struct VkImageViewHandleInfoNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - descriptorType::VkDescriptorType - sampler::VkSampler -end - -struct VkImageViewAddressPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize -end - -# C code: -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) -const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) -const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} - -function vkGetImageViewHandleNVX(device, pInfo) - ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end - -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} - -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 -end - -@cenum VkShaderInfoTypeAMD::UInt32 begin - VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0 - VK_SHADER_INFO_TYPE_BINARY_AMD = 1 - VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2 - VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 2147483647 -end - -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t -end - -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) -const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} - -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) - ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) -end - -struct VkPhysicalDeviceCornerSampledImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cornerSampledImage::VkBool32 -end - -@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 1 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 2 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 4 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 8 - VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end - -const VkExternalMemoryHandleTypeFlagsNV = VkFlags - -@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin - VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 1 - VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 2 - VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 4 - VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end - -const VkExternalMemoryFeatureFlagsNV = VkFlags - -struct VkExternalImageFormatPropertiesNV - imageFormatProperties::VkImageFormatProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV - compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) -const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} - -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) - ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) -end - -struct VkExternalMemoryImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV -end - -struct VkExportMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV -end - -@cenum VkValidationCheckEXT::UInt32 begin - VK_VALIDATION_CHECK_ALL_EXT = 0 - VK_VALIDATION_CHECK_SHADERS_EXT = 1 - VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 -end - -struct VkValidationFlagsEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} -end - -struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - textureCompressionASTC_HDR::VkBool32 -end - -struct VkImageViewASTCDecodeModeEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - decodeMode::VkFormat -end - -struct VkPhysicalDeviceASTCDecodeFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 -end - -@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end - -const VkConditionalRenderingFlagsEXT = VkFlags - -struct VkConditionalRenderingBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT -end - -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 -end - -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - conditionalRenderingEnable::VkBool32 -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) -const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} - -function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) - ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) -end - -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat -end - -struct VkPipelineViewportWScalingStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) -const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} - -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) - ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) -const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} - -function vkReleaseDisplayEXT(physicalDevice, display) - ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) -end - -@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin - VK_SURFACE_COUNTER_VBLANK_EXT = 1 - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end - -const VkSurfaceCounterFlagsEXT = VkFlags - -struct VkSurfaceCapabilities2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minImageCount::UInt32 - maxImageCount::UInt32 - currentExtent::VkExtent2D - minImageExtent::VkExtent2D - maxImageExtent::VkExtent2D - maxImageArrayLayers::UInt32 - supportedTransforms::VkSurfaceTransformFlagsKHR - currentTransform::VkSurfaceTransformFlagBitsKHR - supportedCompositeAlpha::VkCompositeAlphaFlagsKHR - supportedUsageFlags::VkImageUsageFlags - supportedSurfaceCounters::VkSurfaceCounterFlagsEXT -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} - -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) -end - -@cenum VkDisplayPowerStateEXT::UInt32 begin - VK_DISPLAY_POWER_STATE_OFF_EXT = 0 - VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1 - VK_DISPLAY_POWER_STATE_ON_EXT = 2 - VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkDeviceEventTypeEXT::UInt32 begin - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkDisplayEventTypeEXT::UInt32 begin - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 -end - -struct VkDisplayPowerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT -end - -struct VkDeviceEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT -end - -struct VkDisplayEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT -end - -struct VkSwapchainCounterCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) -const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) -const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) -const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} - -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) - ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) -end - -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) -end - -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) - ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) -end - -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) -end - -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 -end - -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 -end - -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 -end - -struct VkPresentTimesInfoGOOGLE - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pTimes::Ptr{VkPresentTimeGOOGLE} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) -const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) -const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} - -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) - ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) -end - -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) -end - -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 -end - -@cenum VkViewportCoordinateSwizzleNV::UInt32 begin - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0 - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1 - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2 - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3 - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4 - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5 - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6 - VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7 - VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 2147483647 -end - -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags - -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV -end - -struct VkPipelineViewportSwizzleStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} -end - -@cenum VkDiscardRectangleModeEXT::UInt32 begin - VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 - VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 - VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 -end - -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 -end - -struct VkPipelineDiscardRectangleStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} - -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) -end - -@cenum VkConservativeRasterizationModeEXT::UInt32 begin - VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0 - VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1 - VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2 - VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 -end - -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 -end - -struct VkPipelineRasterizationConservativeStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat -end - -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags - -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 -end - -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 -end - -struct VkXYColorEXT - x::Cfloat - y::Cfloat -end - -struct VkHdrMetadataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) -const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} - -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) - ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) -end - -const VkDebugUtilsMessengerEXT_T = Cvoid - -const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} - -const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags - -@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin - VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 1 - VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 16 - VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 256 - VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 4096 - VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin - VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 1 - VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 2 - VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 4 - VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end - -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags - -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags - -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags - -struct VkDebugUtilsLabelEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pLabelName::Ptr{Cchar} - color::NTuple{4, Cfloat} -end - -struct VkDebugUtilsObjectNameInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Ptr{Cchar} -end - -struct VkDebugUtilsMessengerCallbackDataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCallbackDataFlagsEXT - pMessageIdName::Ptr{Cchar} - messageIdNumber::Int32 - pMessage::Ptr{Cchar} - queueLabelCount::UInt32 - pQueueLabels::Ptr{VkDebugUtilsLabelEXT} - cmdBufLabelCount::UInt32 - pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} - objectCount::UInt32 - pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} -end - -# C code: -# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} - -struct VkDebugUtilsMessengerCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} -end - -struct VkDebugUtilsObjectTagInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) -const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) -const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) -const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) -const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) -const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) -const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) -const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} - -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) - ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) -end - -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) -end - -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end - -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) -end - -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end - -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end - -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end - -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) -end - -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) -end - -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) -end - -const VkSamplerReductionModeEXT = VkSamplerReductionMode - -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo - -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties - -struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - inlineUniformBlock::VkBool32 - descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 -end - -struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxInlineUniformBlockSize::UInt32 - maxPerStageDescriptorInlineUniformBlocks::UInt32 - maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 - maxDescriptorSetInlineUniformBlocks::UInt32 - maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 -end - -struct VkWriteDescriptorSetInlineUniformBlockEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - dataSize::UInt32 - pData::Ptr{Cvoid} -end - -struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxInlineUniformBlockBindings::UInt32 -end - -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat -end - -struct VkSampleLocationsInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} -end - -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT -end - -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT -end - -struct VkRenderPassSampleLocationsBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} -end - -struct VkPipelineSampleLocationsStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT -end - -struct VkPhysicalDeviceSampleLocationsPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 -end - -struct VkMultisamplePropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} - -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end - -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) -end - -@cenum VkBlendOverlapEXT::UInt32 begin - VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 - VK_BLEND_OVERLAP_DISJOINT_EXT = 1 - VK_BLEND_OVERLAP_CONJOINT_EXT = 2 - VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 -end - -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 -end - -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 -end - -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT -end - -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags - -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 -end - -@cenum VkCoverageModulationModeNV::UInt32 begin - VK_COVERAGE_MODULATION_MODE_NONE_NV = 0 - VK_COVERAGE_MODULATION_MODE_RGB_NV = 1 - VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2 - VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3 - VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 2147483647 -end - -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags - -struct VkPipelineCoverageModulationStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} -end - -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 -end - -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 -end - -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags -end - -struct VkDrmFormatModifierPropertiesListEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} -end - -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} -end - -struct VkImageDrmFormatModifierListCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} -end - -struct VkImageDrmFormatModifierExplicitCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} -end - -struct VkImageDrmFormatModifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} - -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) -end - -const VkValidationCacheEXT_T = Cvoid - -const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} - -@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 -end - -const VkValidationCacheCreateFlagsEXT = VkFlags - -struct VkValidationCacheCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} -end - -struct VkShaderModuleValidationCacheCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) -const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) -const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) -const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} - -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) - ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) -end - -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) -end - -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) -end - -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) -end - -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits - -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags - -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo - -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures - -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties - -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo - -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport - -@cenum VkShadingRatePaletteEntryNV::UInt32 begin - VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 - VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 - VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 - VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 - VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 - VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 -end - -@cenum VkCoarseSampleOrderTypeNV::UInt32 begin - VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 - VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 - VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 - VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 - VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 -end - -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} -end - -struct VkPipelineViewportShadingRateImageStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} -end - -struct VkPhysicalDeviceShadingRateImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 -end - -struct VkPhysicalDeviceShadingRateImagePropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 -end - -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 -end - -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} -end - -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) -const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) -const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) -const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} - -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) -end - -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) -end - -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) -end - -const VkAccelerationStructureKHR_T = Cvoid - -const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} - -const VkAccelerationStructureNV = VkAccelerationStructureKHR - -@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin - VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 - VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 - VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 - VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 - VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 - VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 - VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 -end - -const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR - -@cenum VkGeometryTypeKHR::UInt32 begin - VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 - VK_GEOMETRY_TYPE_AABBS_KHR = 1 - VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 - VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 - VK_GEOMETRY_TYPE_AABBS_NV = 1 - VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 -end - -const VkGeometryTypeNV = VkGeometryTypeKHR - -@cenum VkAccelerationStructureTypeKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 - VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 - VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 - VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 -end - -const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR - -@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin - VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 - VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 - VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 - VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 - VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 - VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 - VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 -end - -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR - -@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 -end - -const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR - -@cenum VkGeometryFlagBitsKHR::UInt32 begin - VK_GEOMETRY_OPAQUE_BIT_KHR = 1 - VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 - VK_GEOMETRY_OPAQUE_BIT_NV = 1 - VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 - VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end - -const VkGeometryFlagsKHR = VkFlags - -const VkGeometryFlagsNV = VkGeometryFlagsKHR - -const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR - -@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin - VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 - VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 - VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end - -const VkGeometryInstanceFlagsKHR = VkFlags - -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR - -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR - -@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 - VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 - VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 - VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 -end - -const VkBuildAccelerationStructureFlagsKHR = VkFlags - -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR - -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR - -struct VkRayTracingShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 -end - -struct VkRayTracingPipelineCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCreateFlags - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - groupCount::UInt32 - pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} - maxRecursionDepth::UInt32 - layout::VkPipelineLayout - basePipelineHandle::VkPipeline - basePipelineIndex::Int32 -end - -struct VkGeometryTrianglesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexData::VkBuffer - vertexOffset::VkDeviceSize - vertexCount::UInt32 - vertexStride::VkDeviceSize - vertexFormat::VkFormat - indexData::VkBuffer - indexOffset::VkDeviceSize - indexCount::UInt32 - indexType::VkIndexType - transformData::VkBuffer - transformOffset::VkDeviceSize -end - -struct VkGeometryAABBNV - sType::VkStructureType - pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize -end - -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV -end - -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR -end - -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} -end - -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV -end - -struct VkBindAccelerationStructureMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} -end - -const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR - -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end - -const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR - -struct VkAccelerationStructureMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV -end - -struct VkPhysicalDeviceRayTracingPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 -end - -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} -end - -const VkTransformMatrixNV = VkTransformMatrixKHR - -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat -end - -const VkAabbPositionsNV = VkAabbPositionsKHR - -struct VkAccelerationStructureInstanceKHR - data::NTuple{64, UInt8} -end - -function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) - f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) - f === :instanceCustomIndex && return Ptr{UInt32}(x + 384) - f === :mask && return Ptr{UInt32}(x + 408) - f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 416) - f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 440) - f === :accelerationStructureReference && return Ptr{UInt64}(x + 448) - return getfield(x, f) -end - -function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) - r = Ref{VkAccelerationStructureInstanceKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) - GC.@preserve r unsafe_load(getproperty(ptr, f)) -end - -function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end - -const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) -const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) -const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) -const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) -const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) -const PFN_vkCompileDeferredNV = Ptr{Cvoid} - -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end - -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end - -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end - -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) -end - -function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) -end - -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) -end - -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) - ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) -end - -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) -end - -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) - ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) -end - -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) - ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) - ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) - ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) -end - -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end - -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end - -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) -end - -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 -end - -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 -end - -struct VkPhysicalDeviceImageViewImageFormatInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageViewType::VkImageViewType -end - -struct VkFilterCubicImageViewImageFormatPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 -end - -@cenum VkQueueGlobalPriorityEXT::UInt32 begin - VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128 - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256 - VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512 - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024 - VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 2147483647 -end - -struct VkDeviceQueueGlobalPriorityCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityEXT -end - -struct VkImportMemoryHostPointerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} -end - -struct VkMemoryHostPointerPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 -end - -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} - -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) - ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) -const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} - -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) -end - -@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 -end - -const VkPipelineCompilerControlFlagsAMD = VkFlags - -struct VkPipelineCompilerControlCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - compilerControlFlags::VkPipelineCompilerControlFlagsAMD -end - -@cenum VkTimeDomainEXT::UInt32 begin - VK_TIME_DOMAIN_DEVICE_EXT = 0 - VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 - VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 - VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 - VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 -end - -struct VkCalibratedTimestampInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) -const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) -const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} - -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) - ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) -end - -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) - ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) -end - -struct VkPhysicalDeviceShaderCorePropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderEngineCount::UInt32 - shaderArraysPerEngineCount::UInt32 - computeUnitsPerShaderArray::UInt32 - simdPerComputeUnit::UInt32 - wavefrontsPerSimd::UInt32 - wavefrontSize::UInt32 - sgprsPerSimd::UInt32 - minSgprAllocation::UInt32 - maxSgprAllocation::UInt32 - sgprAllocationGranularity::UInt32 - vgprsPerSimd::UInt32 - minVgprAllocation::UInt32 - maxVgprAllocation::UInt32 - vgprAllocationGranularity::UInt32 -end - -@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin - VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 - VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 - VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 - VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 -end - -struct VkDeviceMemoryOverallocationCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD -end - -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 -end - -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 -end - -struct VkPipelineVertexInputDivisorStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} -end - -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 -end - -@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin - VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 - VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 - VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 - VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end - -const VkPipelineCreationFeedbackFlagsEXT = VkFlags - -struct VkPipelineCreationFeedbackEXT - flags::VkPipelineCreationFeedbackFlagsEXT - duration::UInt64 -end - -struct VkPipelineCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} - pipelineStageCreationFeedbackCount::UInt32 - pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} -end - -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 -end - -struct VkPhysicalDeviceMeshShaderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 -end - -struct VkPhysicalDeviceMeshShaderPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxDrawMeshTasksCount::UInt32 - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskTotalMemorySize::UInt32 - maxTaskOutputCount::UInt32 - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshTotalMemorySize::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 -end - -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) -const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) -const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} - -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) -end - -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 -end - -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - imageFootprint::VkBool32 -end - -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} -end - -struct VkPhysicalDeviceExclusiveScissorFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) -const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} - -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) - ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) -end - -struct VkQueueFamilyCheckpointPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags -end - -struct VkCheckpointDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) -const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) -const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} - -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) - ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) -end - -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) -end - -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 -end - -const VkPerformanceConfigurationINTEL_T = Cvoid - -const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} - -@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 -end - -@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 -end - -@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin - VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 - VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 - VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 -end - -@cenum VkPerformanceParameterTypeINTEL::UInt32 begin - VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 - VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 - VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 -end - -@cenum VkPerformanceValueTypeINTEL::UInt32 begin - VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 - VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 - VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 - VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 - VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 - VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 -end - -struct VkPerformanceValueDataINTEL - data::NTuple{8, UInt8} -end - -function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) - f === :value32 && return Ptr{UInt32}(x + 0) - f === :value64 && return Ptr{UInt64}(x + 0) - f === :valueFloat && return Ptr{Cfloat}(x + 0) - f === :valueBool && return Ptr{VkBool32}(x + 0) - f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) - return getfield(x, f) -end - -function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) - r = Ref{VkPerformanceValueDataINTEL}(x) - ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) - GC.@preserve r unsafe_load(getproperty(ptr, f)) -end - -function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end - -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL -end - -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} -end - -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL -end - -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL - -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 -end - -struct VkPerformanceStreamMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt32 -end - -struct VkPerformanceOverrideInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 -end - -struct VkPerformanceConfigurationAcquireInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) -const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) -const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) -const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) -const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) -const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) -const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) -const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) -const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} - -function vkInitializePerformanceApiINTEL(device, pInitializeInfo) - ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) -end - -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) -end - -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) -end - -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) -end - -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) -end - -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) -end - -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) -end - -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) -end - -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) -end - -struct VkPhysicalDevicePCIBusInfoPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 -end - -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 -end - -struct VkSwapchainDisplayNativeHdrCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} - -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) -end - -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 -end - -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 -end - -struct VkRenderPassFragmentDensityMapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference -end - -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures - -struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - subgroupSizeControl::VkBool32 - computeFullSubgroups::VkBool32 -end - -struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minSubgroupSize::UInt32 - maxSubgroupSize::UInt32 - maxComputeWorkgroupSubgroups::UInt32 - requiredSubgroupSizeStages::VkShaderStageFlags -end - -struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - requiredSubgroupSize::UInt32 -end - -@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 -end - -const VkShaderCorePropertiesFlagsAMD = VkFlags - -struct VkPhysicalDeviceShaderCoreProperties2AMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 -end - -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 -end - -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} -end - -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryPriority::VkBool32 -end - -struct VkMemoryPriorityAllocateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - priority::Cfloat -end - -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 -end - -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 -end - -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo - -struct VkBufferDeviceAddressCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress -end - -# C code: -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) -const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} - -function vkGetBufferDeviceAddressEXT(device, pInfo) - ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -@cenum VkToolPurposeFlagBitsEXT::UInt32 begin - VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 - VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 - VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 - VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 - VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 - VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 - VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 - VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end - -const VkToolPurposeFlagsEXT = VkFlags - -struct VkPhysicalDeviceToolPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, Cchar} - version::NTuple{256, Cchar} - purposes::VkToolPurposeFlagsEXT - description::NTuple{256, Cchar} - layer::NTuple{256, Cchar} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} - -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) -end - -const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo - -@cenum VkValidationFeatureEnableEXT::UInt32 begin - VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 - VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 - VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 - VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 - VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 - VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 -end - -@cenum VkValidationFeatureDisableEXT::UInt32 begin - VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 - VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 - VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 - VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 - VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 - VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 - VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 -end - -struct VkValidationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} -end - -@cenum VkComponentTypeNV::UInt32 begin - VK_COMPONENT_TYPE_FLOAT16_NV = 0 - VK_COMPONENT_TYPE_FLOAT32_NV = 1 - VK_COMPONENT_TYPE_FLOAT64_NV = 2 - VK_COMPONENT_TYPE_SINT8_NV = 3 - VK_COMPONENT_TYPE_SINT16_NV = 4 - VK_COMPONENT_TYPE_SINT32_NV = 5 - VK_COMPONENT_TYPE_SINT64_NV = 6 - VK_COMPONENT_TYPE_UINT8_NV = 7 - VK_COMPONENT_TYPE_UINT16_NV = 8 - VK_COMPONENT_TYPE_UINT32_NV = 9 - VK_COMPONENT_TYPE_UINT64_NV = 10 - VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 -end - -@cenum VkScopeNV::UInt32 begin - VK_SCOPE_DEVICE_NV = 1 - VK_SCOPE_WORKGROUP_NV = 2 - VK_SCOPE_SUBGROUP_NV = 3 - VK_SCOPE_QUEUE_FAMILY_NV = 5 - VK_SCOPE_MAX_ENUM_NV = 2147483647 -end - -struct VkCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV -end - -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 -end - -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) -const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} - -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end - -@cenum VkCoverageReductionModeNV::UInt32 begin - VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 - VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 - VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 -end - -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags - -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 -end - -struct VkPipelineCoverageReductionStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV -end - -struct VkFramebufferMixedSamplesCombinationNV - sType::VkStructureType - pNext::Ptr{Cvoid} - coverageReductionMode::VkCoverageReductionModeNV - rasterizationSamples::VkSampleCountFlagBits - depthStencilSamples::VkSampleCountFlags - colorSamples::VkSampleCountFlags -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) -const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} - -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) - ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) -end - -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 -end - -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 -end - -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags - -struct VkHeadlessSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} - -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -@cenum VkLineRasterizationModeEXT::UInt32 begin - VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 - VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 - VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 - VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 - VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 -end - -struct VkPhysicalDeviceLineRasterizationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 -end - -struct VkPhysicalDeviceLineRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 -end - -struct VkPipelineRasterizationLineStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) -const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} - -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) - ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) -end - -struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderBufferFloat32Atomics::VkBool32 - shaderBufferFloat32AtomicAdd::VkBool32 - shaderBufferFloat64Atomics::VkBool32 - shaderBufferFloat64AtomicAdd::VkBool32 - shaderSharedFloat32Atomics::VkBool32 - shaderSharedFloat32AtomicAdd::VkBool32 - shaderSharedFloat64Atomics::VkBool32 - shaderSharedFloat64AtomicAdd::VkBool32 - shaderImageFloat32Atomics::VkBool32 - shaderImageFloat32AtomicAdd::VkBool32 - sparseImageFloat32Atomics::VkBool32 - sparseImageFloat32AtomicAdd::VkBool32 -end - -const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) -const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} - -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) -end - -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 -end - -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) -const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) -const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) -const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) -const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} - -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) -end - -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) -end - -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) -end - -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) -end - -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) -end - -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) - ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) -end - -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end - -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) -end - -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) -end - -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) -end - -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) -end - -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) - ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) -end - -struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderDemoteToHelperInvocation::VkBool32 -end - -const VkIndirectCommandsLayoutNV_T = Cvoid - -const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} - -@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin - VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 -end - -@cenum VkIndirectStateFlagBitsNV::UInt32 begin - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end - -const VkIndirectStateFlagsNV = VkFlags - -@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end - -const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags - -struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxGraphicsShaderGroupCount::UInt32 - maxIndirectSequenceCount::UInt32 - maxIndirectCommandsTokenCount::UInt32 - maxIndirectCommandsStreamCount::UInt32 - maxIndirectCommandsTokenOffset::UInt32 - maxIndirectCommandsStreamStride::UInt32 - minSequencesCountBufferOffsetAlignment::UInt32 - minSequencesIndexBufferOffsetAlignment::UInt32 - minIndirectCommandsBufferOffsetAlignment::UInt32 -end - -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 -end - -struct VkGraphicsShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} -end - -struct VkGraphicsPipelineShaderGroupsCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} -end - -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 -end - -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType -end - -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 -end - -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 -end - -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize -end - -struct VkIndirectCommandsLayoutTokenNV - sType::VkStructureType - pNext::Ptr{Cvoid} - tokenType::VkIndirectCommandsTokenTypeNV - stream::UInt32 - offset::UInt32 - vertexBindingUnit::UInt32 - vertexDynamicStride::VkBool32 - pushconstantPipelineLayout::VkPipelineLayout - pushconstantShaderStageFlags::VkShaderStageFlags - pushconstantOffset::UInt32 - pushconstantSize::UInt32 - indirectStateFlags::VkIndirectStateFlagsNV - indexTypeCount::UInt32 - pIndexTypes::Ptr{VkIndexType} - pIndexTypeValues::Ptr{UInt32} -end - -struct VkIndirectCommandsLayoutCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} -end - -struct VkGeneratedCommandsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineBindPoint::VkPipelineBindPoint - pipeline::VkPipeline - indirectCommandsLayout::VkIndirectCommandsLayoutNV - streamCount::UInt32 - pStreams::Ptr{VkIndirectCommandsStreamNV} - sequencesCount::UInt32 - preprocessBuffer::VkBuffer - preprocessOffset::VkDeviceSize - preprocessSize::VkDeviceSize - sequencesCountBuffer::VkBuffer - sequencesCountOffset::VkDeviceSize - sequencesIndexBuffer::VkBuffer - sequencesIndexOffset::VkDeviceSize -end - -struct VkGeneratedCommandsMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineBindPoint::VkPipelineBindPoint - pipeline::VkPipeline - indirectCommandsLayout::VkIndirectCommandsLayoutNV - maxSequencesCount::UInt32 -end - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) -const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) -const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) -const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) -const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} - -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) - ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) -end - -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) - ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) -end - -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) -end - -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) -end - -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) -end - -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 -end - -struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - storageTexelBufferOffsetAlignmentBytes::VkDeviceSize - storageTexelBufferOffsetSingleTexelAlignment::VkBool32 - uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize - uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 -end - -struct VkRenderPassTransformBeginInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR -end - -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D -end - -struct VkPhysicalDeviceRobustness2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 -end - -struct VkPhysicalDeviceRobustness2PropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize -end - -struct VkSamplerCustomBorderColorCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat -end - -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 -end - -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 -end - -const VkPrivateDataSlotEXT_T = Cvoid - -const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} - -@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin - VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 -end - -const VkPrivateDataSlotCreateFlagsEXT = VkFlags - -struct VkPhysicalDevicePrivateDataFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - privateData::VkBool32 -end - -struct VkDevicePrivateDataCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - privateDataSlotRequestCount::UInt32 -end - -struct VkPrivateDataSlotCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPrivateDataSlotCreateFlagsEXT -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} - -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) -end - -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) -end - -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) -end - -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) -end - -struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineCreationCacheControl::VkBool32 -end - -@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin - VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 - VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 - VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 -end - -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags - -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 -end - -struct VkDeviceDiagnosticsConfigCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV -end - -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 -end - -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 -end - -struct VkPhysicalDeviceImageRobustnessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustImageAccess::VkBool32 -end - -struct VkPhysicalDevice4444FormatsFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 -end - -const VkAndroidSurfaceCreateFlagsKHR = VkFlags - -const ANativeWindow = Cvoid - -struct VkAndroidSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkAndroidSurfaceCreateFlagsKHR - window::Ptr{ANativeWindow} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAndroidSurfaceKHR ) ( VkInstance instance , const VkAndroidSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateAndroidSurfaceKHR = Ptr{Cvoid} - -function vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateAndroidSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkAndroidSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -struct VkAndroidHardwareBufferUsageANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - androidHardwareBufferUsage::UInt64 -end - -struct VkAndroidHardwareBufferPropertiesANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - allocationSize::VkDeviceSize - memoryTypeBits::UInt32 -end - -struct VkAndroidHardwareBufferFormatPropertiesANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - externalFormat::UInt64 - formatFeatures::VkFormatFeatureFlags - samplerYcbcrConversionComponents::VkComponentMapping - suggestedYcbcrModel::VkSamplerYcbcrModelConversion - suggestedYcbcrRange::VkSamplerYcbcrRange - suggestedXChromaOffset::VkChromaLocation - suggestedYChromaOffset::VkChromaLocation -end - -const AHardwareBuffer = Cvoid - -struct VkImportAndroidHardwareBufferInfoANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::Ptr{AHardwareBuffer} -end - -struct VkMemoryGetAndroidHardwareBufferInfoANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory -end - -struct VkExternalFormatANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - externalFormat::UInt64 -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetAndroidHardwareBufferPropertiesANDROID ) ( VkDevice device , const struct AHardwareBuffer * buffer , VkAndroidHardwareBufferPropertiesANDROID * pProperties ) -const PFN_vkGetAndroidHardwareBufferPropertiesANDROID = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryAndroidHardwareBufferANDROID ) ( VkDevice device , const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo , struct AHardwareBuffer * * pBuffer ) -const PFN_vkGetMemoryAndroidHardwareBufferANDROID = Ptr{Cvoid} - -function vkGetAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties) - ccall((:vkGetAndroidHardwareBufferPropertiesANDROID, libvulkan), VkResult, (VkDevice, Ptr{AHardwareBuffer}, Ptr{VkAndroidHardwareBufferPropertiesANDROID}), device, buffer, pProperties) -end - -function vkGetMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer) - ccall((:vkGetMemoryAndroidHardwareBufferANDROID, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetAndroidHardwareBufferInfoANDROID}, Ptr{Ptr{AHardwareBuffer}}), device, pInfo, pBuffer) -end - -const VkImagePipeSurfaceCreateFlagsFUCHSIA = VkFlags - -struct VkImagePipeSurfaceCreateInfoFUCHSIA - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkImagePipeSurfaceCreateFlagsFUCHSIA - imagePipeHandle::Cint -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImagePipeSurfaceFUCHSIA ) ( VkInstance instance , const VkImagePipeSurfaceCreateInfoFUCHSIA * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateImagePipeSurfaceFUCHSIA = Ptr{Cvoid} - -function vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateImagePipeSurfaceFUCHSIA, libvulkan), VkResult, (VkInstance, Ptr{VkImagePipeSurfaceCreateInfoFUCHSIA}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -const VkIOSSurfaceCreateFlagsMVK = VkFlags - -struct VkIOSSurfaceCreateInfoMVK - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkIOSSurfaceCreateFlagsMVK - pView::Ptr{Cvoid} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIOSSurfaceMVK ) ( VkInstance instance , const VkIOSSurfaceCreateInfoMVK * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateIOSSurfaceMVK = Ptr{Cvoid} - -function vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateIOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkIOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -const VkMacOSSurfaceCreateFlagsMVK = VkFlags - -struct VkMacOSSurfaceCreateInfoMVK - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkMacOSSurfaceCreateFlagsMVK - pView::Ptr{Cvoid} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMacOSSurfaceMVK ) ( VkInstance instance , const VkMacOSSurfaceCreateInfoMVK * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateMacOSSurfaceMVK = Ptr{Cvoid} - -function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateMacOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -const CAMetalLayer = Cvoid - -const VkMetalSurfaceCreateFlagsEXT = VkFlags - -struct VkMetalSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkMetalSurfaceCreateFlagsEXT - pLayer::Ptr{CAMetalLayer} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMetalSurfaceEXT ) ( VkInstance instance , const VkMetalSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateMetalSurfaceEXT = Ptr{Cvoid} - -function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateMetalSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -const VkViSurfaceCreateFlagsNN = VkFlags - -struct VkViSurfaceCreateInfoNN - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkViSurfaceCreateFlagsNN - window::Ptr{Cvoid} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateViSurfaceNN ) ( VkInstance instance , const VkViSurfaceCreateInfoNN * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateViSurfaceNN = Ptr{Cvoid} - -function vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateViSurfaceNN, libvulkan), VkResult, (VkInstance, Ptr{VkViSurfaceCreateInfoNN}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -const VkWaylandSurfaceCreateFlagsKHR = VkFlags - -const wl_display = Cvoid - -const wl_surface = Cvoid - -struct VkWaylandSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWaylandSurfaceCreateFlagsKHR - display::Ptr{wl_display} - surface::Ptr{wl_surface} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} - -# C code: -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) -const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} - -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) - ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end - -const VkWin32SurfaceCreateFlagsKHR = VkFlags - -struct VkWin32SurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWin32SurfaceCreateFlagsKHR - hinstance::Cint - hwnd::Cint -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWin32SurfaceKHR ) ( VkInstance instance , const VkWin32SurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateWin32SurfaceKHR = Ptr{Cvoid} - -# C code: -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex ) -const PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = Ptr{Cvoid} - -function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWin32SurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex) - ccall((:vkGetPhysicalDeviceWin32PresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) -end - -struct VkImportMemoryWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - handle::Cint - name::Cint -end - -struct VkExportMemoryWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{Cint} - dwAccess::Cint - name::Cint -end - -struct VkMemoryWin32HandlePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 -end - -struct VkMemoryGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleKHR ) ( VkDevice device , const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) -const PFN_vkGetMemoryWin32HandleKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandlePropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , HANDLE handle , VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties ) -const PFN_vkGetMemoryWin32HandlePropertiesKHR = Ptr{Cvoid} - -function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetMemoryWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties) - ccall((:vkGetMemoryWin32HandlePropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) -end - -struct VkWin32KeyedMutexAcquireReleaseInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - acquireCount::UInt32 - pAcquireSyncs::Ptr{VkDeviceMemory} - pAcquireKeys::Ptr{UInt64} - pAcquireTimeouts::Ptr{UInt32} - releaseCount::UInt32 - pReleaseSyncs::Ptr{VkDeviceMemory} - pReleaseKeys::Ptr{UInt64} -end - -struct VkImportSemaphoreWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - handle::Cint - name::Cint -end - -struct VkExportSemaphoreWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{Cint} - dwAccess::Cint - name::Cint -end - -struct VkD3D12FenceSubmitInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreValuesCount::UInt32 - pWaitSemaphoreValues::Ptr{UInt64} - signalSemaphoreValuesCount::UInt32 - pSignalSemaphoreValues::Ptr{UInt64} -end - -struct VkSemaphoreGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreWin32HandleKHR ) ( VkDevice device , const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo ) -const PFN_vkImportSemaphoreWin32HandleKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreWin32HandleKHR ) ( VkDevice device , const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) -const PFN_vkGetSemaphoreWin32HandleKHR = Ptr{Cvoid} - -function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo) - ccall((:vkImportSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) -end - -function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -struct VkImportFenceWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - handle::Cint - name::Cint -end - -struct VkExportFenceWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{Cint} - dwAccess::Cint - name::Cint -end - -struct VkFenceGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceWin32HandleKHR ) ( VkDevice device , const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo ) -const PFN_vkImportFenceWin32HandleKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceWin32HandleKHR ) ( VkDevice device , const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) -const PFN_vkGetFenceWin32HandleKHR = Ptr{Cvoid} - -function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo) - ccall((:vkImportFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) -end - -function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -struct VkImportMemoryWin32HandleInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagsNV - handle::Cint -end - -struct VkExportMemoryWin32HandleInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{Cint} - dwAccess::Cint -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleNV ) ( VkDevice device , VkDeviceMemory memory , VkExternalMemoryHandleTypeFlagsNV handleType , HANDLE * pHandle ) -const PFN_vkGetMemoryWin32HandleNV = Ptr{Cvoid} - -function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle) - ccall((:vkGetMemoryWin32HandleNV, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{Cint}), device, memory, handleType, pHandle) -end - -struct VkWin32KeyedMutexAcquireReleaseInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - acquireCount::UInt32 - pAcquireSyncs::Ptr{VkDeviceMemory} - pAcquireKeys::Ptr{UInt64} - pAcquireTimeoutMilliseconds::Ptr{UInt32} - releaseCount::UInt32 - pReleaseSyncs::Ptr{VkDeviceMemory} - pReleaseKeys::Ptr{UInt64} -end - -@cenum VkFullScreenExclusiveEXT::UInt32 begin - VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0 - VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1 - VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2 - VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3 - VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 2147483647 -end - -struct VkSurfaceFullScreenExclusiveInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fullScreenExclusive::VkFullScreenExclusiveEXT -end - -struct VkSurfaceCapabilitiesFullScreenExclusiveEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fullScreenExclusiveSupported::VkBool32 -end - -struct VkSurfaceFullScreenExclusiveWin32InfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - hmonitor::Cint -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) -const PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireFullScreenExclusiveModeEXT ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkAcquireFullScreenExclusiveModeEXT = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseFullScreenExclusiveModeEXT ) ( VkDevice device , VkSwapchainKHR swapchain ) -const PFN_vkReleaseFullScreenExclusiveModeEXT = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModes2EXT ) ( VkDevice device , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkDeviceGroupPresentModeFlagsKHR * pModes ) -const PFN_vkGetDeviceGroupSurfacePresentModes2EXT = Ptr{Cvoid} - -function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModes2EXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) -end - -function vkAcquireFullScreenExclusiveModeEXT(device, swapchain) - ccall((:vkAcquireFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -function vkReleaseFullScreenExclusiveModeEXT(device, swapchain) - ccall((:vkReleaseFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModes2EXT, libvulkan), VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) -end - -const VkXcbSurfaceCreateFlagsKHR = VkFlags - -struct VkXcbSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXcbSurfaceCreateFlagsKHR - connection::Ptr{Cint} - window::Cint -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} - -# C code: -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) -const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} - -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) - ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Cint}, Cint), physicalDevice, queueFamilyIndex, connection, visual_id) -end - -const VkXlibSurfaceCreateFlagsKHR = VkFlags - -struct VkXlibSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXlibSurfaceCreateFlagsKHR - dpy::Ptr{Cint} - window::Cint -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} - -# C code: -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) -const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} - -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) - ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Cint}, Cint), physicalDevice, queueFamilyIndex, dpy, visualID) -end - -const VkDirectFBSurfaceCreateFlagsEXT = VkFlags - -struct VkDirectFBSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDirectFBSurfaceCreateFlagsEXT - dfb::Ptr{Cint} - surface::Ptr{Cint} -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDirectFBSurfaceEXT ) ( VkInstance instance , const VkDirectFBSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateDirectFBSurfaceEXT = Ptr{Cvoid} - -# C code: -# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , IDirectFB * dfb ) -const PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT = Ptr{Cvoid} - -function vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDirectFBSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDirectFBSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb) - ccall((:vkGetPhysicalDeviceDirectFBPresentationSupportEXT, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Cint}), physicalDevice, queueFamilyIndex, dfb) -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) -const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) -const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} - -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) - ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cint}, VkDisplayKHR), physicalDevice, dpy, display) -end - -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) - ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cint}, Cint, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end - -const VkStreamDescriptorSurfaceCreateFlagsGGP = VkFlags - -struct VkStreamDescriptorSurfaceCreateInfoGGP - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkStreamDescriptorSurfaceCreateFlagsGGP - streamDescriptor::Cint -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateStreamDescriptorSurfaceGGP ) ( VkInstance instance , const VkStreamDescriptorSurfaceCreateInfoGGP * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) -const PFN_vkCreateStreamDescriptorSurfaceGGP = Ptr{Cvoid} - -function vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateStreamDescriptorSurfaceGGP, libvulkan), VkResult, (VkInstance, Ptr{VkStreamDescriptorSurfaceCreateInfoGGP}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -struct VkPresentFrameTokenGGP - sType::VkStructureType - pNext::Ptr{Cvoid} - frameToken::Cint -end - -const VkDeferredOperationKHR_T = Cvoid - -const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} - -struct VkDeferredOperationInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - operationHandle::VkDeferredOperationKHR -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDeferredOperationKHR ) ( VkDevice device , const VkAllocationCallbacks * pAllocator , VkDeferredOperationKHR * pDeferredOperation ) -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkDestroyDeferredOperationKHR ) ( VkDevice device , VkDeferredOperationKHR operation , const VkAllocationCallbacks * pAllocator ) -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} - -# C code: -# typedef uint32_t ( VKAPI_PTR * PFN_vkGetDeferredOperationMaxConcurrencyKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeferredOperationResultKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkDeferredOperationJoinKHR ) ( VkDevice device , VkDeferredOperationKHR operation ) -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} - -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) -end - -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) -end - -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -struct VkPipelineLibraryCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} -end - -@cenum VkAccelerationStructureBuildTypeKHR::UInt32 begin - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0 - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1 - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2 - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR = 2147483647 -end - -struct VkDeviceOrHostAddressKHR - data::NTuple{8, UInt8} -end - -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) -end - -function Base.getproperty(x::VkDeviceOrHostAddressKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressKHR}, r) - GC.@preserve r unsafe_load(getproperty(ptr, f)) -end - -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end - -struct VkDeviceOrHostAddressConstKHR - data::NTuple{8, UInt8} -end - -function Base.getproperty(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol) - f === :deviceAddress && return Ptr{VkDeviceAddress}(x + 0) - f === :hostAddress && return Ptr{Ptr{Cvoid}}(x + 0) - return getfield(x, f) -end - -function Base.getproperty(x::VkDeviceOrHostAddressConstKHR, f::Symbol) - r = Ref{VkDeviceOrHostAddressConstKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkDeviceOrHostAddressConstKHR}, r) - GC.@preserve r unsafe_load(getproperty(ptr, f)) -end - -function Base.setproperty!(x::Ptr{VkDeviceOrHostAddressConstKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end - -struct VkAccelerationStructureBuildOffsetInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 -end - -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end - -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPayloadSize::UInt32 - maxAttributeSize::UInt32 - maxCallableSize::UInt32 -end - -struct VkRayTracingPipelineCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCreateFlags - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - groupCount::UInt32 - pGroups::Ptr{VkRayTracingShaderGroupCreateInfoKHR} - maxRecursionDepth::UInt32 - libraries::VkPipelineLibraryCreateInfoKHR - pLibraryInterface::Ptr{VkRayTracingPipelineInterfaceCreateInfoKHR} - layout::VkPipelineLayout - basePipelineHandle::VkPipeline - basePipelineIndex::Int32 -end - -struct VkAccelerationStructureGeometryTrianglesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR -end - -struct VkAccelerationStructureGeometryAabbsDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize -end - -struct VkAccelerationStructureGeometryInstancesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR -end - -struct VkAccelerationStructureGeometryDataKHR - data::NTuple{64, UInt8} -end - -function Base.getproperty(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol) - f === :triangles && return Ptr{VkAccelerationStructureGeometryTrianglesDataKHR}(x + 0) - f === :aabbs && return Ptr{VkAccelerationStructureGeometryAabbsDataKHR}(x + 0) - f === :instances && return Ptr{VkAccelerationStructureGeometryInstancesDataKHR}(x + 0) - return getfield(x, f) -end - -function Base.getproperty(x::VkAccelerationStructureGeometryDataKHR, f::Symbol) - r = Ref{VkAccelerationStructureGeometryDataKHR}(x) - ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureGeometryDataKHR}, r) - GC.@preserve r unsafe_load(getproperty(ptr, f)) -end - -function Base.setproperty!(x::Ptr{VkAccelerationStructureGeometryDataKHR}, f::Symbol, v) - unsafe_store!(getproperty(x, f), v) -end - -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end - -struct VkAccelerationStructureBuildGeometryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeKHR - flags::VkBuildAccelerationStructureFlagsKHR - update::VkBool32 - srcAccelerationStructure::VkAccelerationStructureKHR - dstAccelerationStructure::VkAccelerationStructureKHR - geometryArrayOfPointers::VkBool32 - geometryCount::UInt32 - ppGeometries::Ptr{Ptr{VkAccelerationStructureGeometryKHR}} - scratchData::VkDeviceOrHostAddressKHR -end - -struct VkAccelerationStructureCreateGeometryTypeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - maxPrimitiveCount::UInt32 - indexType::VkIndexType - maxVertexCount::UInt32 - vertexFormat::VkFormat - allowsTransforms::VkBool32 -end - -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - type::VkAccelerationStructureTypeKHR - flags::VkBuildAccelerationStructureFlagsKHR - maxGeometryCount::UInt32 - pGeometryInfos::Ptr{VkAccelerationStructureCreateGeometryTypeInfoKHR} - deviceAddress::VkDeviceAddress -end - -struct VkAccelerationStructureMemoryRequirementsInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeKHR - buildType::VkAccelerationStructureBuildTypeKHR - accelerationStructure::VkAccelerationStructureKHR -end - -struct VkPhysicalDeviceRayTracingFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracing::VkBool32 - rayTracingShaderGroupHandleCaptureReplay::VkBool32 - rayTracingShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingAccelerationStructureCaptureReplay::VkBool32 - rayTracingIndirectTraceRays::VkBool32 - rayTracingIndirectAccelerationStructureBuild::VkBool32 - rayTracingHostAccelerationStructureCommands::VkBool32 - rayQuery::VkBool32 - rayTracingPrimitiveCulling::VkBool32 -end - -struct VkPhysicalDeviceRayTracingPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxPrimitiveCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 - shaderGroupHandleCaptureReplaySize::UInt32 -end - -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end - -struct VkAccelerationStructureVersionKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - versionData::Ptr{UInt8} -end - -struct VkStridedBufferRegionKHR - buffer::VkBuffer - offset::VkDeviceSize - stride::VkDeviceSize - size::VkDeviceSize -end - -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end - -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end - -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end - -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureKHR ) ( VkDevice device , const VkAccelerationStructureCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureKHR * pAccelerationStructure ) -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsKHR ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoKHR * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) -const PFN_vkGetAccelerationStructureMemoryRequirementsKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildOffsetInfoKHR * const * ppOffsetInfos ) -const PFN_vkCmdBuildAccelerationStructureKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureBuildGeometryInfoKHR * pInfo , VkBuffer indirectBuffer , VkDeviceSize indirectOffset , uint32_t indirectStride ) -const PFN_vkCmdBuildAccelerationStructureIndirectKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkBuildAccelerationStructureKHR ) ( VkDevice device , uint32_t infoCount , const VkAccelerationStructureBuildGeometryInfoKHR * pInfos , const VkAccelerationStructureBuildOffsetInfoKHR * const * ppOffsetInfos ) -const PFN_vkBuildAccelerationStructureKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureKHR ) ( VkDevice device , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyAccelerationStructureToMemoryKHR ) ( VkDevice device , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCopyMemoryToAccelerationStructureKHR ) ( VkDevice device , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkWriteAccelerationStructuresPropertiesKHR ) ( VkDevice device , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , size_t dataSize , void * pData , size_t stride ) -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureToMemoryKHR ) ( VkCommandBuffer commandBuffer , const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo ) -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdCopyMemoryToAccelerationStructureKHR ) ( VkCommandBuffer commandBuffer , const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo ) -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysKHR ) ( VkCommandBuffer commandBuffer , const VkStridedBufferRegionKHR * pRaygenShaderBindingTable , const VkStridedBufferRegionKHR * pMissShaderBindingTable , const VkStridedBufferRegionKHR * pHitShaderBindingTable , const VkStridedBufferRegionKHR * pCallableShaderBindingTable , uint32_t width , uint32_t height , uint32_t depth ) -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesKHR ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} - -# C code: -# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetAccelerationStructureDeviceAddressKHR ) ( VkDevice device , const VkAccelerationStructureDeviceAddressInfoKHR * pInfo ) -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} - -# C code: -# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysIndirectKHR ) ( VkCommandBuffer commandBuffer , const VkStridedBufferRegionKHR * pRaygenShaderBindingTable , const VkStridedBufferRegionKHR * pMissShaderBindingTable , const VkStridedBufferRegionKHR * pHitShaderBindingTable , const VkStridedBufferRegionKHR * pCallableShaderBindingTable , VkBuffer buffer , VkDeviceSize offset ) -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} - -# C code: -# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceAccelerationStructureCompatibilityKHR ) ( VkDevice device , const VkAccelerationStructureVersionKHR * version ) -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} - -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end - -function vkGetAccelerationStructureMemoryRequirementsKHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoKHR}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkCmdBuildAccelerationStructureKHR(commandBuffer, infoCount, pInfos, ppOffsetInfos) - ccall((:vkCmdBuildAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildOffsetInfoKHR}}), commandBuffer, infoCount, pInfos, ppOffsetInfos) -end - -function vkCmdBuildAccelerationStructureIndirectKHR(commandBuffer, pInfo, indirectBuffer, indirectOffset, indirectStride) - ccall((:vkCmdBuildAccelerationStructureIndirectKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pInfo, indirectBuffer, indirectOffset, indirectStride) -end - -function vkBuildAccelerationStructureKHR(device, infoCount, pInfos, ppOffsetInfos) - ccall((:vkBuildAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildOffsetInfoKHR}}), device, infoCount, pInfos, ppOffsetInfos) -end - -function vkCopyAccelerationStructureKHR(device, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkCopyAccelerationStructureInfoKHR}), device, pInfo) -end - -function vkCopyAccelerationStructureToMemoryKHR(device, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, pInfo) -end - -function vkCopyMemoryToAccelerationStructureKHR(device, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, pInfo) -end - -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) - ccall((:vkWriteAccelerationStructuresPropertiesKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end - -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end - -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end - -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end - -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) - ccall((:vkCmdTraceRaysKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkStridedBufferRegionKHR}, Ptr{VkStridedBufferRegionKHR}, Ptr{VkStridedBufferRegionKHR}, Ptr{VkStridedBufferRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end - -function vkCreateRayTracingPipelinesKHR(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) - ccall((:vkCreateRayTracingPipelinesKHR, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end - -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) - ccall((:vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, buffer, offset) - ccall((:vkCmdTraceRaysIndirectKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkStridedBufferRegionKHR}, Ptr{VkStridedBufferRegionKHR}, Ptr{VkStridedBufferRegionKHR}, Ptr{VkStridedBufferRegionKHR}, VkBuffer, VkDeviceSize), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, buffer, offset) -end - -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, version) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureVersionKHR}), device, version) -end - -const VULKAN_H_ = 1 - -const VK_PLATFORM_H_ = nothing - -const VKAPI_ATTR = nothing - -const VKAPI_CALL = nothing - -const VKAPI_PTR = nothing - -const VULKAN_CORE_H_ = 1 - -const VK_VERSION_1_0 = 1 - -# Skipping MacroDefinition: VK_API_VERSION_1_0 VK_MAKE_VERSION ( 1 , 0 , 0 ) - -const VK_HEADER_VERSION = 151 - -# Skipping MacroDefinition: VK_HEADER_VERSION_COMPLETE VK_MAKE_VERSION ( 1 , 2 , VK_HEADER_VERSION ) - -const VK_NULL_HANDLE = 0 - -# Skipping MacroDefinition: VK_ATTACHMENT_UNUSED ( ~ 0U ) - -const VK_FALSE = 0 - -const VK_LOD_CLAMP_NONE = Float32(1000.0) - -# Skipping MacroDefinition: VK_QUEUE_FAMILY_IGNORED ( ~ 0U ) - -# Skipping MacroDefinition: VK_REMAINING_ARRAY_LAYERS ( ~ 0U ) - -# Skipping MacroDefinition: VK_REMAINING_MIP_LEVELS ( ~ 0U ) - -# Skipping MacroDefinition: VK_SUBPASS_EXTERNAL ( ~ 0U ) - -const VK_TRUE = 1 - -# Skipping MacroDefinition: VK_WHOLE_SIZE ( ~ 0ULL ) - -const VK_MAX_MEMORY_TYPES = 32 - -const VK_MAX_MEMORY_HEAPS = 16 - -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 - -const VK_UUID_SIZE = 16 - -const VK_MAX_EXTENSION_NAME_SIZE = 256 - -const VK_MAX_DESCRIPTION_SIZE = 256 - -const VK_VERSION_1_1 = 1 - -# Skipping MacroDefinition: VK_API_VERSION_1_1 VK_MAKE_VERSION ( 1 , 1 , 0 ) - -const VK_MAX_DEVICE_GROUP_SIZE = 32 - -const VK_LUID_SIZE = 8 - -# Skipping MacroDefinition: VK_QUEUE_FAMILY_EXTERNAL ( ~ 0U - 1 ) - -const VK_VERSION_1_2 = 1 - -# Skipping MacroDefinition: VK_API_VERSION_1_2 VK_MAKE_VERSION ( 1 , 2 , 0 ) - -const VK_MAX_DRIVER_NAME_SIZE = 256 - -const VK_MAX_DRIVER_INFO_SIZE = 256 - -const VK_KHR_surface = 1 - -const VK_KHR_SURFACE_SPEC_VERSION = 25 - -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" - -const VK_KHR_swapchain = 1 - -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 - -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" - -const VK_KHR_display = 1 - -const VK_KHR_DISPLAY_SPEC_VERSION = 23 - -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" - -const VK_KHR_display_swapchain = 1 - -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 - -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" - -const VK_KHR_sampler_mirror_clamp_to_edge = 1 - -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 - -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" - -const VK_KHR_multiview = 1 - -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 - -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" - -const VK_KHR_get_physical_device_properties2 = 1 - -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 - -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" - -const VK_KHR_device_group = 1 - -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 - -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" - -const VK_KHR_shader_draw_parameters = 1 - -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 - -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" - -const VK_KHR_maintenance1 = 1 - -const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 - -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" - -const VK_KHR_device_group_creation = 1 - -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 - -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" - -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE - -const VK_KHR_external_memory_capabilities = 1 - -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 - -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" - -const VK_LUID_SIZE_KHR = VK_LUID_SIZE - -const VK_KHR_external_memory = 1 - -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 - -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" - -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL - -const VK_KHR_external_memory_fd = 1 - -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 - -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" - -const VK_KHR_external_semaphore_capabilities = 1 - -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 - -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" - -const VK_KHR_external_semaphore = 1 - -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 - -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" - -const VK_KHR_external_semaphore_fd = 1 - -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 - -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" - -const VK_KHR_push_descriptor = 1 - -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 - -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" - -const VK_KHR_shader_float16_int8 = 1 - -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 - -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" - -const VK_KHR_16bit_storage = 1 - -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 - -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" - -const VK_KHR_incremental_present = 1 - -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 - -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" - -const VK_KHR_descriptor_update_template = 1 - -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 - -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" - -const VK_KHR_imageless_framebuffer = 1 - -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 - -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" - -const VK_KHR_create_renderpass2 = 1 - -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 - -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" - -const VK_KHR_shared_presentable_image = 1 - -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 - -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" - -const VK_KHR_external_fence_capabilities = 1 - -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 - -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" - -const VK_KHR_external_fence = 1 - -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 - -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" - -const VK_KHR_external_fence_fd = 1 - -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 - -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" - -const VK_KHR_performance_query = 1 - -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 - -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" - -const VK_KHR_maintenance2 = 1 - -const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 - -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" - -const VK_KHR_get_surface_capabilities2 = 1 - -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 - -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" - -const VK_KHR_variable_pointers = 1 - -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 - -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" - -const VK_KHR_get_display_properties2 = 1 - -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 - -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" - -const VK_KHR_dedicated_allocation = 1 - -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 - -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" - -const VK_KHR_storage_buffer_storage_class = 1 - -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 - -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" - -const VK_KHR_relaxed_block_layout = 1 - -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 - -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" - -const VK_KHR_get_memory_requirements2 = 1 - -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 - -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" - -const VK_KHR_image_format_list = 1 - -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 - -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" - -const VK_KHR_sampler_ycbcr_conversion = 1 - -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 - -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" - -const VK_KHR_bind_memory2 = 1 - -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 - -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" - -const VK_KHR_maintenance3 = 1 - -const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 - -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" - -const VK_KHR_draw_indirect_count = 1 - -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 - -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" - -const VK_KHR_shader_subgroup_extended_types = 1 - -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 - -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" - -const VK_KHR_8bit_storage = 1 - -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 - -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" - -const VK_KHR_shader_atomic_int64 = 1 - -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 - -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" - -const VK_KHR_shader_clock = 1 - -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 - -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" - -const VK_KHR_driver_properties = 1 - -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 - -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" - -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE - -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE - -const VK_KHR_shader_float_controls = 1 - -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 - -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" - -const VK_KHR_depth_stencil_resolve = 1 - -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 - -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" - -const VK_KHR_swapchain_mutable_format = 1 - -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 - -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" - -const VK_KHR_timeline_semaphore = 1 - -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 - -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" - -const VK_KHR_vulkan_memory_model = 1 - -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 - -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" - -const VK_KHR_spirv_1_4 = 1 - -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 - -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" - -const VK_KHR_surface_protected_capabilities = 1 - -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 - -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" - -const VK_KHR_separate_depth_stencil_layouts = 1 - -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 - -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" - -const VK_KHR_uniform_buffer_standard_layout = 1 - -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 - -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" - -const VK_KHR_buffer_device_address = 1 - -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 - -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" - -const VK_KHR_pipeline_executable_properties = 1 - -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 - -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" - -const VK_KHR_shader_non_semantic_info = 1 - -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 - -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" - -const VK_EXT_debug_report = 1 - -const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 - -const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" - -const VK_NV_glsl_shader = 1 - -const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 - -const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" - -const VK_EXT_depth_range_unrestricted = 1 - -const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 - -const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" - -const VK_IMG_filter_cubic = 1 - -const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 - -const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" - -const VK_AMD_rasterization_order = 1 - -const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 - -const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" - -const VK_AMD_shader_trinary_minmax = 1 - -const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 - -const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" - -const VK_AMD_shader_explicit_vertex_parameter = 1 - -const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 - -const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" - -const VK_EXT_debug_marker = 1 - -const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 - -const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" - -const VK_AMD_gcn_shader = 1 - -const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 - -const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" - -const VK_NV_dedicated_allocation = 1 - -const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 - -const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" - -const VK_EXT_transform_feedback = 1 - -const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 - -const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" - -const VK_NVX_image_view_handle = 1 - -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 - -const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" - -const VK_AMD_draw_indirect_count = 1 - -const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 - -const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" - -const VK_AMD_negative_viewport_height = 1 - -const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 - -const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" - -const VK_AMD_gpu_shader_half_float = 1 - -const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 - -const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" - -const VK_AMD_shader_ballot = 1 - -const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 - -const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" - -const VK_AMD_texture_gather_bias_lod = 1 - -const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 - -const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" - -const VK_AMD_shader_info = 1 - -const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 - -const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" - -const VK_AMD_shader_image_load_store_lod = 1 - -const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 - -const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" - -const VK_NV_corner_sampled_image = 1 - -const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 - -const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" - -const VK_IMG_format_pvrtc = 1 - -const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 - -const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" - -const VK_NV_external_memory_capabilities = 1 - -const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 - -const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" - -const VK_NV_external_memory = 1 - -const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 - -const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" - -const VK_EXT_validation_flags = 1 - -const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 - -const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" - -const VK_EXT_shader_subgroup_ballot = 1 - -const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 - -const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" - -const VK_EXT_shader_subgroup_vote = 1 - -const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 - -const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" - -const VK_EXT_texture_compression_astc_hdr = 1 - -const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 - -const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" - -const VK_EXT_astc_decode_mode = 1 - -const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 - -const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" - -const VK_EXT_conditional_rendering = 1 - -const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 - -const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" - -const VK_NV_clip_space_w_scaling = 1 - -const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 - -const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" - -const VK_EXT_direct_mode_display = 1 - -const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 - -const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" - -const VK_EXT_display_surface_counter = 1 - -const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 - -const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" - -const VK_EXT_display_control = 1 - -const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 - -const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" - -const VK_GOOGLE_display_timing = 1 - -const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 - -const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" - -const VK_NV_sample_mask_override_coverage = 1 - -const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 - -const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" - -const VK_NV_geometry_shader_passthrough = 1 - -const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 - -const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" - -const VK_NV_viewport_array2 = 1 - -const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 - -const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" - -const VK_NVX_multiview_per_view_attributes = 1 - -const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 - -const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" - -const VK_NV_viewport_swizzle = 1 - -const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 - -const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" - -const VK_EXT_discard_rectangles = 1 - -const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 - -const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" - -const VK_EXT_conservative_rasterization = 1 - -const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 - -const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" - -const VK_EXT_depth_clip_enable = 1 - -const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 - -const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" - -const VK_EXT_swapchain_colorspace = 1 - -const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 - -const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" - -const VK_EXT_hdr_metadata = 1 - -const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 - -const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" - -const VK_EXT_external_memory_dma_buf = 1 - -const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 - -const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" - -const VK_EXT_queue_family_foreign = 1 - -const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 - -const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" - -# Skipping MacroDefinition: VK_QUEUE_FAMILY_FOREIGN_EXT ( ~ 0U - 2 ) - -const VK_EXT_debug_utils = 1 - -const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 - -const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" - -const VK_EXT_sampler_filter_minmax = 1 - -const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 - -const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" - -const VK_AMD_gpu_shader_int16 = 1 - -const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 - -const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" - -const VK_AMD_mixed_attachment_samples = 1 - -const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 - -const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" - -const VK_AMD_shader_fragment_mask = 1 - -const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 - -const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" - -const VK_EXT_inline_uniform_block = 1 - -const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 - -const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" - -const VK_EXT_shader_stencil_export = 1 - -const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 - -const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" - -const VK_EXT_sample_locations = 1 - -const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 - -const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" - -const VK_EXT_blend_operation_advanced = 1 - -const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 - -const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" - -const VK_NV_fragment_coverage_to_color = 1 - -const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 - -const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" - -const VK_NV_framebuffer_mixed_samples = 1 - -const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 - -const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" - -const VK_NV_fill_rectangle = 1 - -const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 - -const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" - -const VK_NV_shader_sm_builtins = 1 - -const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 - -const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" - -const VK_EXT_post_depth_coverage = 1 - -const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 - -const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" - -const VK_EXT_image_drm_format_modifier = 1 - -const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 - -const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" - -const VK_EXT_validation_cache = 1 - -const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 - -const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" - -const VK_EXT_descriptor_indexing = 1 - -const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 - -const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" - -const VK_EXT_shader_viewport_index_layer = 1 - -const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 - -const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" - -const VK_NV_shading_rate_image = 1 - -const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 - -const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" - -const VK_NV_ray_tracing = 1 - -const VK_NV_RAY_TRACING_SPEC_VERSION = 3 - -const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" - -# Skipping MacroDefinition: VK_SHADER_UNUSED_KHR ( ~ 0U ) - -const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR - -const VK_NV_representative_fragment_test = 1 - -const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 - -const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" - -const VK_EXT_filter_cubic = 1 - -const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 - -const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" - -const VK_QCOM_render_pass_shader_resolve = 1 - -const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 - -const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" - -const VK_EXT_global_priority = 1 - -const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 - -const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" - -const VK_EXT_external_memory_host = 1 - -const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 - -const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" - -const VK_AMD_buffer_marker = 1 - -const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 - -const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" - -const VK_AMD_pipeline_compiler_control = 1 - -const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 - -const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" - -const VK_EXT_calibrated_timestamps = 1 - -const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 - -const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" - -const VK_AMD_shader_core_properties = 1 - -const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 - -const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" - -const VK_AMD_memory_overallocation_behavior = 1 - -const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 - -const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" - -const VK_EXT_vertex_attribute_divisor = 1 - -const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 - -const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" - -const VK_EXT_pipeline_creation_feedback = 1 - -const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 - -const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" - -const VK_NV_shader_subgroup_partitioned = 1 - -const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 - -const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" - -const VK_NV_compute_shader_derivatives = 1 - -const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 - -const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" - -const VK_NV_mesh_shader = 1 - -const VK_NV_MESH_SHADER_SPEC_VERSION = 1 - -const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" - -const VK_NV_fragment_shader_barycentric = 1 - -const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 - -const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" - -const VK_NV_shader_image_footprint = 1 - -const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 - -const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" - -const VK_NV_scissor_exclusive = 1 - -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 - -const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" - -const VK_NV_device_diagnostic_checkpoints = 1 - -const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 - -const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" - -const VK_INTEL_shader_integer_functions2 = 1 - -const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 - -const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" - -const VK_INTEL_performance_query = 1 - -const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 - -const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" - -const VK_EXT_pci_bus_info = 1 - -const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 - -const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" - -const VK_AMD_display_native_hdr = 1 - -const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 - -const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" - -const VK_EXT_fragment_density_map = 1 - -const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 - -const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" - -const VK_EXT_scalar_block_layout = 1 - -const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 - -const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" - -const VK_GOOGLE_hlsl_functionality1 = 1 - -const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 - -const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" - -const VK_GOOGLE_decorate_string = 1 - -const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 - -const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" - -const VK_EXT_subgroup_size_control = 1 - -const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 - -const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" - -const VK_AMD_shader_core_properties2 = 1 - -const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 - -const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" - -const VK_AMD_device_coherent_memory = 1 - -const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 - -const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" - -const VK_EXT_memory_budget = 1 - -const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 - -const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" - -const VK_EXT_memory_priority = 1 - -const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 - -const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" - -const VK_NV_dedicated_allocation_image_aliasing = 1 - -const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 - -const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" - -const VK_EXT_buffer_device_address = 1 - -const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 - -const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" - -const VK_EXT_tooling_info = 1 - -const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 - -const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" - -const VK_EXT_separate_stencil_usage = 1 - -const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 - -const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" - -const VK_EXT_validation_features = 1 - -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 - -const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" - -const VK_NV_cooperative_matrix = 1 - -const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 - -const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" - -const VK_NV_coverage_reduction_mode = 1 - -const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 - -const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" - -const VK_EXT_fragment_shader_interlock = 1 - -const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 - -const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" - -const VK_EXT_ycbcr_image_arrays = 1 - -const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 - -const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" - -const VK_EXT_headless_surface = 1 - -const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 - -const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" - -const VK_EXT_line_rasterization = 1 - -const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 - -const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" - -const VK_EXT_shader_atomic_float = 1 - -const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 - -const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" - -const VK_EXT_host_query_reset = 1 - -const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 - -const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" - -const VK_EXT_index_type_uint8 = 1 - -const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 - -const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" - -const VK_EXT_extended_dynamic_state = 1 - -const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 - -const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" - -const VK_EXT_shader_demote_to_helper_invocation = 1 - -const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 - -const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" - -const VK_NV_device_generated_commands = 1 - -const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 - -const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" - -const VK_EXT_texel_buffer_alignment = 1 - -const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 - -const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" - -const VK_QCOM_render_pass_transform = 1 - -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 - -const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" - -const VK_EXT_robustness2 = 1 - -const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 - -const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" - -const VK_EXT_custom_border_color = 1 - -const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 - -const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" - -const VK_GOOGLE_user_type = 1 - -const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 - -const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" - -const VK_EXT_private_data = 1 - -const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 - -const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" - -const VK_EXT_pipeline_creation_cache_control = 1 - -const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 - -const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" - -const VK_NV_device_diagnostics_config = 1 - -const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 - -const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" - -const VK_QCOM_render_pass_store_ops = 1 - -const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 - -const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" - -const VK_EXT_fragment_density_map2 = 1 - -const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 - -const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" - -const VK_EXT_image_robustness = 1 - -const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 - -const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" - -const VK_EXT_4444_formats = 1 - -const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 - -const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" - -const VULKAN_ANDROID_H_ = 1 - -const VK_KHR_android_surface = 1 - -const VK_KHR_ANDROID_SURFACE_SPEC_VERSION = 6 - -const VK_KHR_ANDROID_SURFACE_EXTENSION_NAME = "VK_KHR_android_surface" - -const VK_ANDROID_external_memory_android_hardware_buffer = 1 - -const VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION = 3 - -const VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME = "VK_ANDROID_external_memory_android_hardware_buffer" - -const VULKAN_FUCHSIA_H_ = 1 - -const VK_FUCHSIA_imagepipe_surface = 1 - -const VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION = 1 - -const VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME = "VK_FUCHSIA_imagepipe_surface" - -const VULKAN_IOS_H_ = 1 - -const VK_MVK_ios_surface = 1 - -const VK_MVK_IOS_SURFACE_SPEC_VERSION = 3 - -const VK_MVK_IOS_SURFACE_EXTENSION_NAME = "VK_MVK_ios_surface" - -const VULKAN_MACOS_H_ = 1 - -const VK_MVK_macos_surface = 1 - -const VK_MVK_MACOS_SURFACE_SPEC_VERSION = 3 - -const VK_MVK_MACOS_SURFACE_EXTENSION_NAME = "VK_MVK_macos_surface" - -const VULKAN_METAL_H_ = 1 - -const VK_EXT_metal_surface = 1 - -const VK_EXT_METAL_SURFACE_SPEC_VERSION = 1 - -const VK_EXT_METAL_SURFACE_EXTENSION_NAME = "VK_EXT_metal_surface" - -const VULKAN_VI_H_ = 1 - -const VK_NN_vi_surface = 1 - -const VK_NN_VI_SURFACE_SPEC_VERSION = 1 - -const VK_NN_VI_SURFACE_EXTENSION_NAME = "VK_NN_vi_surface" - -const VULKAN_WAYLAND_H_ = 1 - -const VK_KHR_wayland_surface = 1 - -const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 - -const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" - -const VULKAN_WIN32_H_ = 1 - -const VK_KHR_win32_surface = 1 - -const VK_KHR_WIN32_SURFACE_SPEC_VERSION = 6 - -const VK_KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface" - -const VK_KHR_external_memory_win32 = 1 - -const VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 - -const VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_KHR_external_memory_win32" - -const VK_KHR_win32_keyed_mutex = 1 - -const VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION = 1 - -const VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_KHR_win32_keyed_mutex" - -const VK_KHR_external_semaphore_win32 = 1 - -const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION = 1 - -const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME = "VK_KHR_external_semaphore_win32" - -const VK_KHR_external_fence_win32 = 1 - -const VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION = 1 - -const VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME = "VK_KHR_external_fence_win32" - -const VK_NV_external_memory_win32 = 1 - -const VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 - -const VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_NV_external_memory_win32" - -const VK_NV_win32_keyed_mutex = 1 - -const VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION = 2 - -const VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_NV_win32_keyed_mutex" - -const VK_EXT_full_screen_exclusive = 1 - -const VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION = 4 - -const VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME = "VK_EXT_full_screen_exclusive" - -const VULKAN_XCB_H_ = 1 - -const VK_KHR_xcb_surface = 1 - -const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 - -const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" - -const VULKAN_XLIB_H_ = 1 - -const VK_KHR_xlib_surface = 1 - -const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 - -const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" - -const VULKAN_DIRECTFB_H_ = 1 - -const VK_EXT_directfb_surface = 1 - -const VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION = 1 - -const VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME = "VK_EXT_directfb_surface" - -const VULKAN_XLIB_XRANDR_H_ = 1 - -const VK_EXT_acquire_xlib_display = 1 - -const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 - -const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" - -const VULKAN_GGP_H_ = 1 - -const VK_GGP_stream_descriptor_surface = 1 - -const VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION = 1 - -const VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME = "VK_GGP_stream_descriptor_surface" - -const VK_GGP_frame_token = 1 - -const VK_GGP_FRAME_TOKEN_SPEC_VERSION = 1 - -const VK_GGP_FRAME_TOKEN_EXTENSION_NAME = "VK_GGP_frame_token" - -const VULKAN_BETA_H_ = 1 - -const VK_KHR_deferred_host_operations = 1 - -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 3 - -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" - -const VK_KHR_pipeline_library = 1 - -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 - -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" - -const VK_KHR_ray_tracing = 1 - -const VK_KHR_RAY_TRACING_SPEC_VERSION = 8 - -const VK_KHR_RAY_TRACING_EXTENSION_NAME = "VK_KHR_ray_tracing" - # exports const PREFIXES = ["VK_", "Vk", "vk"] -foreach(names(@__MODULE__; all=true)) do s - for prefix in PREFIXES - if startswith(string(s), prefix) - @eval export $s - end +for name in names(@__MODULE__; all=true), prefix in PREFIXES + if startswith(string(name), prefix) + @eval export $name end end From 850dfddf94a4b6a13c157f6035927a0b365307d1 Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Wed, 5 May 2021 01:58:06 +0900 Subject: [PATCH 15/17] Update CEnum.jl --- src/CEnum.jl | 205 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 120 insertions(+), 85 deletions(-) diff --git a/src/CEnum.jl b/src/CEnum.jl index 8f5fe61..d25f83a 100644 --- a/src/CEnum.jl +++ b/src/CEnum.jl @@ -1,114 +1,149 @@ +# copied from https://github.com/JuliaLang/julia/pull/30924 +# modified to be in compliance with C99: http://port70.net/~nsz/c/c99/n1256.html#6.7.2.2 module CEnum -abstract type Cenum{T} end +import Core.Intrinsics.bitcast +export @cenum -Base.:|(a::T, b::T) where {T<:Cenum{UInt32}} = UInt32(a) | UInt32(b) -Base.:&(a::T, b::T) where {T<:Cenum{UInt32}} = UInt32(a) & UInt32(b) -Base.:(==)(a::Integer, b::Cenum{T}) where {T<:Integer} = a == T(b) -Base.:(==)(a::Cenum, b::Integer) = b == a +function namemap end +function name_value_pairs end -# typemin and typemax won't change for an enum, so we might as well inline them per type -Base.typemax(::Type{T}) where {T<:Cenum} = last(enum_values(T)) -Base.typemin(::Type{T}) where {T<:Cenum} = first(enum_values(T)) +""" + Cenum{T<:Integer} +The abstract supertype of all enumerated types defined with [`@cenum`](@ref). +""" +abstract type Cenum{T<:Integer} end -Base.convert(::Type{Integer}, x::Cenum{T}) where {T<:Integer} = Base.bitcast(T, x) -Base.convert(::Type{T}, x::Cenum{T2}) where {T<:Integer,T2<:Integer} = convert(T, Base.bitcast(T2, x)) +basetype(::Type{<:Cenum{T}}) where {T<:Integer} = T -(::Type{T})(x::Cenum{T2}) where {T<:Integer,T2<:Integer} = T(Base.bitcast(T2, x))::T -(::Type{T})(x) where {T<:Cenum} = convert(T, x) +(::Type{T})(x::Cenum{T2}) where {T<:Integer,T2<:Integer} = T(bitcast(T2, x))::T +Base.cconvert(::Type{T}, x::Cenum{T2}) where {T<:Integer,T2<:Integer} = T(x) +Base.write(io::IO, x::Cenum{T}) where {T<:Integer} = write(io, T(x)) +Base.read(io::IO, ::Type{T}) where {T<:Cenum} = T(read(io, basetype(T))) -Base.write(io::IO, x::Cenum) = write(io, Int32(x)) -Base.read(io::IO, ::Type{T}) where {T<:Cenum} = T(read(io, Int32)) +Base.isless(x::T, y::T) where {T<:Cenum} = isless(basetype(T)(x), basetype(T)(y)) -enum_values(::T) where {T<:Cenum} = enum_values(T) -enum_names(::T) where {T<:Cenum} = enum_names(T) +Base.Symbol(x::Cenum)::Symbol = get(namemap(typeof(x)), Integer(x), :UnknownMember) -is_member(::Type{T}, x::Integer) where {T<:Cenum} = is_member(T, enum_values(T), x) +Base.print(io::IO, x::Cenum) = print(io, Symbol(x)) -@inline is_member(::Type{T}, r::UnitRange, x::Integer) where {T<:Cenum} = x in r -@inline function is_member(::Type{T}, values::Tuple, x::Integer) where {T<:Cenum} - lo, hi = typemin(T), typemax(T) - xhi && return false - for val in values - val == x && return true - val > x && return false # is sorted +function Base.show(io::IO, x::Cenum) + sym = Symbol(x) + if !get(io, :compact, false) + from = get(io, :module, Main) + def = typeof(x).name.module + if from === nothing || !Base.isvisible(sym, def, from) + show(io, def) + print(io, ".") + end end - return false + print(io, sym) end -function enum_name(x::T) where {T<:Cenum} - index = something(findfirst(isequal(x), enum_values(T)), 0) - if index != 0 - return enum_names(T)[index] - end - error("Invalid enum: $(Int(x)), name not found") +function Base.show(io::IO, ::MIME"text/plain", x::Cenum) + print(io, x, "::") + show(IOContext(io, :compact => true), typeof(x)) + print(io, " = ") + show(io, Integer(x)) end -Base.show(io::IO, x::Cenum) = print(io, enum_name(x), "($(Int(x)))") - -function islinear(array) - isempty(array) && return false # false, really? it's kinda undefined? - lastval = first(array) - for val in Iterators.rest(array, 2) - val-lastval == 1 || return false +function Base.show(io::IO, ::MIME"text/plain", t::Type{<:Cenum}) + print(io, "Cenum ") + Base.show_datatype(io, t) + print(io, ":") + for (s, i) in name_value_pairs(t) + print(io, "\n", Symbol(s), " = ") + show(io, Integer(i)) end - return true end +# give Cenum types scalar behavior in broadcasting +Base.broadcastable(x::Cenum) = Ref(x) + +@noinline enum_argument_error(typename, x) = throw(ArgumentError(string("input value out of range for Cenum $(typename): $x"))) -macro cenum(name, args...) - if Meta.isexpr(name, :curly) - typename, type = name.args - typename = esc(typename) - typesize = 8*sizeof(getfield(Base, type)) - typedef_expr = :(primitive type $typename <: CEnum.Cenum{$type} $typesize end) - elseif isa(name, Symbol) - # default to UInt32 - typename = esc(name) - type = UInt32 - typedef_expr = :(primitive type $typename <: CEnum.Cenum{UInt32} 32 end) - else - error("Name must be symbol or Name{Type}. Found: $name") +macro cenum(T, syms...) + if isempty(syms) + throw(ArgumentError("no arguments given for Cenum $T")) end - lastval = -1 - name_values = map([args...]) do arg - if isa(arg, Symbol) - lastval += 1 - val = lastval - sym = arg - elseif arg.head == :(=) || arg.head == :kw - sym,val = arg.args - else - error("Expression of type $arg not supported. Try only symbol or name = value") + basetype = Int32 + typename = T + if isa(T, Expr) && T.head == :(::) && length(T.args) == 2 && isa(T.args[1], Symbol) + typename = T.args[1] + basetype = Core.eval(__module__, T.args[2]) + if !isa(basetype, DataType) || !(basetype <: Integer) || !isbitstype(basetype) + throw(ArgumentError("invalid base type for Cenum $typename, $T=::$basetype; base type must be an integer primitive type")) end - (sym, val) + elseif !isa(T, Symbol) + throw(ArgumentError("invalid type expression for Cenum $T")) end - sort!(name_values, by=last) # sort for values - values = map(last, name_values) - - if islinear(values) # optimize for linear values - values = :($(first(values)):$(last(values))) - else - values = :(tuple($(values...))) + seen = Set{Symbol}() + name_values = Tuple{Symbol,basetype}[] + namemap = Dict{basetype,Symbol}() + lo = hi = 0 + i = zero(basetype) + + if length(syms) == 1 && syms[1] isa Expr && syms[1].head == :block + syms = syms[1].args end - value_block = Expr(:block) - - for (ename, value) in name_values - push!(value_block.args, :(const $(esc(ename)) = $typename($value))) + for s in syms + s isa LineNumberNode && continue + if isa(s, Symbol) + if i == typemin(basetype) && !isempty(name_values) + throw(ArgumentError("overflow in value \"$s\" of Cenum $typename")) + end + elseif isa(s, Expr) && + (s.head == :(=) || s.head == :kw) && + length(s.args) == 2 && isa(s.args[1], Symbol) + i = Core.eval(__module__, s.args[2]) # allow exprs, e.g. uint128"1" + if !isa(i, Integer) + throw(ArgumentError("invalid value for Cenum $typename, $s; values must be integers")) + end + i = convert(basetype, i) + s = s.args[1] + else + throw(ArgumentError(string("invalid argument for Cenum ", typename, ": ", s))) + end + if !Base.isidentifier(s) + throw(ArgumentError("invalid name for Cenum $typename; \"$s\" is not a valid identifier")) + end + haskey(namemap, i) || (namemap[i] = s;) + if s in seen + throw(ArgumentError("name \"$s\" in Cenum $typename is not unique")) + end + push!(seen, s) + push!(name_values, (s,i)) + if length(name_values) == 1 + lo = hi = i + else + lo = min(lo, i) + hi = max(hi, i) + end + i += oneunit(i) end - - expr = quote - $typedef_expr - function Base.convert(::Type{$typename}, x::Integer) - is_member($typename, x) || Base.Enums.enum_argument_error($(Expr(:quote, name)), x) - Base.bitcast($typename, convert($type, x)) + blk = quote + # enum definition + Base.@__doc__(primitive type $(esc(typename)) <: Cenum{$(basetype)} $(sizeof(basetype) * 8) end) + function $(esc(typename))(x::Integer) + x ≤ typemax(x) || enum_argument_error($(Expr(:quote, typename)), x) + return bitcast($(esc(typename)), convert($(basetype), x)) + end + CEnum.namemap(::Type{$(esc(typename))}) = $(esc(namemap)) + CEnum.name_value_pairs(::Type{$(esc(typename))}) = $(esc(name_values)) + Base.typemin(x::Type{$(esc(typename))}) = $(esc(typename))($lo) + Base.typemax(x::Type{$(esc(typename))}) = $(esc(typename))($hi) + let insts = (Any[ $(esc(typename))(v[2]) for v in $name_values ]...,) + Base.instances(::Type{$(esc(typename))}) = insts + end + end + if isa(typename, Symbol) + for (sym, i) in name_values + push!(blk.args, :(const $(esc(sym)) = $(esc(typename))($i))) end - CEnum.enum_names(::Type{$typename}) = tuple($(map(x-> Expr(:quote, first(x)), name_values)...)) - CEnum.enum_values(::Type{$typename}) = $values - $value_block end - expr + push!(blk.args, :nothing) + blk.head = :toplevel + return blk end -export @cenum end # module From 03264b588cb4d8d34ba795a2c5cb065a08850d3c Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Wed, 5 May 2021 02:09:28 +0900 Subject: [PATCH 16/17] Ignore `VKAPI_PTR` and `VKAPI_CALL` --- gen/generator.jl | 4 ++++ lib/i686-w64-mingw32.jl | 4 ---- lib/x86_64-w64-mingw32.jl | 4 ---- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/gen/generator.jl b/gen/generator.jl index 961a9f7..42d0a58 100755 --- a/gen/generator.jl +++ b/gen/generator.jl @@ -59,6 +59,10 @@ for target in JLLEnvs.JLL_ENV_TRIPLES general["output_file_path"] = joinpath(@__DIR__, "..", "lib", "$target.jl") general["use_deterministic_symbol"] = true general["print_using_CEnum"] = false + general["printer_blacklist"] = [ + "VKAPI_PTR", + "VKAPI_CALL", + ] codegen["opaque_as_mutable_struct"] = false # add compiler flags diff --git a/lib/i686-w64-mingw32.jl b/lib/i686-w64-mingw32.jl index 1b4868a..a98388a 100644 --- a/lib/i686-w64-mingw32.jl +++ b/lib/i686-w64-mingw32.jl @@ -10505,10 +10505,6 @@ end const VULKAN_H_ = 1 -const VKAPI_CALL = __stdcall - -const VKAPI_PTR = VKAPI_CALL - const VULKAN_CORE_H_ = 1 const VK_VERSION_1_0 = 1 diff --git a/lib/x86_64-w64-mingw32.jl b/lib/x86_64-w64-mingw32.jl index 019cf8e..5a90c27 100644 --- a/lib/x86_64-w64-mingw32.jl +++ b/lib/x86_64-w64-mingw32.jl @@ -10571,10 +10571,6 @@ end const VULKAN_H_ = 1 -const VKAPI_CALL = __stdcall - -const VKAPI_PTR = VKAPI_CALL - const VULKAN_CORE_H_ = 1 const VK_VERSION_1_0 = 1 From 8dcb6465176943228f4fcc39d7ae795a2460d00d Mon Sep 17 00:00:00 2001 From: Gnimuc Date: Wed, 5 May 2021 02:12:19 +0900 Subject: [PATCH 17/17] Update CEnum.jl again --- src/CEnum.jl | 22 ++++++++++++++++++++++ src/operators.jl | 24 ++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/operators.jl diff --git a/src/CEnum.jl b/src/CEnum.jl index d25f83a..eaf2847 100644 --- a/src/CEnum.jl +++ b/src/CEnum.jl @@ -1,3 +1,23 @@ +# Copyright (c) 2019 JuliaInterop + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + # copied from https://github.com/JuliaLang/julia/pull/30924 # modified to be in compliance with C99: http://port70.net/~nsz/c/c99/n1256.html#6.7.2.2 module CEnum @@ -146,4 +166,6 @@ macro cenum(T, syms...) return blk end +include("operators.jl") + end # module diff --git a/src/operators.jl b/src/operators.jl new file mode 100644 index 0000000..9496fd6 --- /dev/null +++ b/src/operators.jl @@ -0,0 +1,24 @@ +import Base: +, -, *, &, |, xor, ==, ~ + +for op in (:+, :-, :&, :|, :xor, :(==)) + @eval begin + function ($op)(a::Cenum{T}, b::Cenum{S}) where {T<:Integer,S<:Integer} + N = promote_type(T, S) + ($op)(N(a), N(b)) + end + function ($op)(a::Cenum{T}, b::S) where {T<:Integer,S<:Integer} + N = promote_type(T, S) + ($op)(N(a), N(b)) + end + function ($op)(a::T, b::Cenum{S}) where {T<:Integer,S<:Integer} + N = promote_type(T, S) + ($op)(N(a), N(b)) + end + end +end + +function ~(a::Cenum{T}) where {T<:Integer} + ~(T(a)) +end + +Base.convert(::Type{T1}, x::Cenum{T2}) where {T1<:Integer,T2<:Integer} = convert(T1, T2(x))